.AttachAll()如何用于更新和插入

时间:2014-06-28 22:39:07

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

这个问题很简单,但我似乎无法从MSDN文档中得到明确答案。

我有一个映射到数据库中的表的对象列表。其中一些对象填充了ID,有些则没有填充。我想使用像

这样的东西
myContext.myTable.AttachAll(myList);

现在,我希望具有ID的对象(数据库中的主键)将被附加并对这些行执行更新,而我的没有ID的对象将是像INSERT一样处理,db会自动创建ID。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

取自documentation

  

此方法将集合的所有实体附加到DataContext   处于修改或未修改状态。如果附加为修改,   实体必须声明版本成员或不必声明   参与更新冲突检查。如果附加为未修改,   假定该实体代表原始值。打电话后   这个方法,实体的字段可以用其他方法修改   调用SubmitChanges之前来自客户端的信息。更多   信息,请参阅N层中的数据检索和CUD操作   应用程序(LINQ to SQL)。

     

附加新实体时,任何子项的延迟加载器   集合(例如,来自的实体的EntitySet集合)   关联表)已初始化。调用SubmitChanges时   子集合的成员处于未修改状态。至   更新子集合的成员,您必须显式调用Attach   并指定该实体。