【问题标题】:EntityFramework show entities before saving changesEntityFramework 在保存更改之前显示实体
【发布时间】:2011-03-28 07:42:41
【问题描述】:

Entity Framework ObjectSet 及其方法 ToList 仅显示已保存的实体。这意味着,当我打电话时

context.AddToCustomers(myNewCust);

然后(不调用 SaveChanges)

myDataGrid.DataContext = context.Customers.ToList();

DataGrid 不显示新添加的实体(甚至 context.Customers.Count() 也不包括它)。

有没有办法显示这些实体(带有EntityState = Added 的实体)?

提前致谢。

【问题讨论】:

    标签: c# entity-framework savechanges


    【解决方案1】:

    我认为您可以通过调用以下命令来获取未保存的添加实体:

    var inserted = context.ObjectStateManager
                          .GetObjectStateEntries(EntityState.Added)
                          .Where(e => !e.IsRelationship)
                          .Select(e => e.Entity)
                          .OfType<Cutomer>();
    

    但是仅仅通过阅读您的问题,我很害怕您正在尝试做错事。为什么需要将未保存的实体与检索的实体结合起来?如果您需要显示未保存的内容,您只需将其保存在您自己的单独集合中即可。

    【讨论】:

    • "为什么需要将未保存的实体与检索的实体结合起来?"也许您的表单中有一个实体,其相关子实体显示在列表中 - 您希望将新子实体添加到列表中,但仅在保存父实体时保留子实体。
    【解决方案2】:

    看一下 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) 方法

    http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.aspx

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多