我想通过linq更新实体,但由于我在序列化后在视图中编辑实体,因此我无法直接访问数据上下文中的实体。我可以这样做:
entity.property1 = obj.property1;
entity.property2 = obj.property2;
...
那不酷...根本不酷。
接下来我尝试的是通过.attach()这样做:
context.Table.attach(entity, obj);
也不起作用。那还有另一种选择吗?
答案 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