Linq to sql 什么构成LINQ to SQL中实体的显式创建?多么优雅啊;“解决方案”;有没有这样的限制?

Linq to sql 什么构成LINQ to SQL中实体的显式创建?多么优雅啊;“解决方案”;有没有这样的限制?,linq-to-sql,Linq To Sql,我一直对著名的“不允许在查询中显式构造实体类型“##”存在问题。”错误 据我所知,这是因为如果允许显式构造这些对象,跟踪数据库的更改将非常复杂 所以我问:什么构成了这些对象的显式创建?换句话说: 为什么我可以这样做: Product foo = new Product(); foo.productName = "Something"; 但不能这样做: var bar = (from item in myDataContext.Products select new Pro

我一直对著名的“不允许在查询中显式构造实体类型“##”存在问题。”错误

据我所知,这是因为如果允许显式构造这些对象,跟踪数据库的更改将非常复杂

所以我问:什么构成了这些对象的显式创建?换句话说:
为什么我可以这样做:

Product foo = new Product();
foo.productName = "Something";
但不能这样做:

var bar = (from item in myDataContext.Products
           select new Product {
                 productName = item.productName
           }).ToList();
我认为在运行LINQ查询时,所选对象和检索到的表行之间会有某种关联(这就是为什么在第一段代码中更新产品根本没有问题,因为没有关联)但是,我想更深入地理解这一点(这是我向您提出的第一个问题,即:一段代码与另一段代码有什么不同)

现在,我听说了一些解决这个问题的方法:
1) 创建继承linq类的类(或具有相同属性的类)
2) 选择匿名对象

这就引出了我的第二个问题:

若您选择上述两种方法中的一种,您会选择哪一种,为什么?你的方法还带来了哪些其他问题?还有其他方法吗?

为什么要在没有关联的情况下获取对象?这可能会影响答案。我在过去做了一些分离来进行一些记录克隆为什么你要尝试在没有关联的情况下获取对象?这可能会影响答案。在过去,我做了一些分离来保存一些记录克隆