【问题标题】:query the attached entities查询附加实体
【发布时间】:2011-05-22 19:45:27
【问题描述】:

在执行 SaveChanges 之前,我正在执行几个插入命令。

有没有办法查询附加的实体(我现在在 SaveChanges 之前插入的)以检查是否添加或更新了特定记录?

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    是的,有办法。 ObjectContext 实例提供名为 ObjectStateManger 的属性。 ObjectStateManager 管理所有连接的实体并且知道它们的状态:

    ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(attachedEntity);
    EntityState state = entry.State;
    

    如果您需要获取所有修改或添加的实体,您可以使用:

    var entities = context.ObjectStateManager
                          .GetObjectStateEntries(EntityState.Added | EntitiSate.Modified)
                          .Select(e => e.Entity);
    

    您可以进一步使用OfType 来仅选择某种类型的实体。您还可以使用此逻辑 SaveChanges,正如 Stack Overflow 上多次描述的那样 - 例如 here

    【讨论】:

    • 你知道如何将 ObjectStateManager 方法包​​装到接口,这样我就不会依赖数据库层了吗?
    • 只需查看 MSDN:msdn.microsoft.com/en-us/library/… 就可以看到 ObjectStateManager 没有实现任何接口,因此如果您想要任何包装器,您必须定义自己的接口并创建自己的包装类。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多