通过LINQ to SQL中的新对象更新实体

时间:2010-06-01 20:10:20

标签: c# .net linq linq-to-sql

我想通过linq更新实体,但由于我在序列化后在视图中编辑实体,因此我无法直接访问数据上下文中的实体。我可以这样做:

entity.property1 = obj.property1;
entity.property2 = obj.property2;
...

那不酷...根本不酷。

接下来我尝试的是通过.attach()这样做:

context.Table.attach(entity, obj);

也不起作用。那还有另一种选择吗?

1 个答案:

答案 0 :(得分:0)

Attach()无效,因为实体仍然附加到DataContext。您是否考虑过在重新附加实体时创建DataContext的新实例?通常建议不要使用长寿命的DataContexts,而应该为每个工作单元创建一个新实例。这是因为只要您将DataContext实例保留在内存中,您从中检索的所有实体都将保留在内存中(假设已启用ObjectTracking)。

来自MSDN:

  

通常,DataContext实例是   旨在持续一个“单位   工作“但你的应用程序定义   那个词。 DataContext是   轻便且不贵   创建。典型的LINQ to SQL   应用程序创建DataContext   方法范围或实例   昙花一现的成员   代表一组相关的逻辑   数据库操作。

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.aspx