【问题标题】:how does .AttachAll() work for updating and inserting.AttachAll() 如何用于更新和插入
【发布时间】:2014-06-28 22:39:06
【问题描述】:

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

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

myContext.myTable.AttachAll(myList);

现在,我希望具有 ID(即数据库中的主键)的对象将被附加并对这些行执行更新,而我没有 ID 的对象将被视为一个 INSERT ,数据库将自动创建一个ID。是这样的吗?

【问题讨论】:

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


    【解决方案1】:

    取自documentation

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

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

    【讨论】:

    • 仍然不是 100% 清楚,我使用 .AttachAll(myList, false)
    • Table 类具有 AttachAll 方法。所有受影响的实体都已附加并正在等待插入/更新命令。您可以指定一个子实体 (myList) 来缩小要附加的集合。
    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 2017-04-26
    • 2015-06-15
    • 2016-01-03
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多