【问题标题】:Why is the Entity Framework System.Data.Entity.Core.Objects.RelationshipEntry Wrong? ( For Change Tracking)为什么实体框架 System.Data.Entity.Core.Objects.RelationshipEntry 错误? (用于更改跟踪)
【发布时间】:2014-11-26 13:20:10
【问题描述】:

全部:

我们公司正在开发一个使用实体框架的 ASP.NET 应用程序。 采用实体框架模型优先方法来创建数据库表和 POCO 此外,我们正在使用 Effort Testing Tool for Entity Framework 和 NUnit Framework 来进行单元测试。

目前,我们正在客户和帐户业务实体 ASP.NET 应用程序上尝试一些 CRUD 操作。

每位客户最多可选择拥有一个帐户。 以下是 2 个表之间的关系在数据库图中的样子:

我们的应用程序还跟踪实体的变化跟踪以及实体之间的关系。

我们有以下代码示例,其中包含填充的客户和帐户业务条目:

        Customer custFour = new Customer { CustomerID = "4    ", Orders = new HashSet<Order>(), CustomerDemographics = new HashSet<CustomerDemographic>(), CompanyName = "FC Barcelona", ContactName = "Lionel Messi", ContactTitle = "current top basket ball player", Address = "344 testing street", City = "Buenos Aires", Region = "Oklahoma", PostalCode = "4498", Country = "Argentina", Phone = "2344949494", Fax = "33325" };

        Account acctFour = new Account { UserName = "lmessi", Password = "myteamlostworldcupmatch", Customer = custFour, AccountRoleMaps = new HashSet<AccountRoleMap>() };

为了简单起见,我们还调用了如下一行代码,以便实体框架 DbContext 可以保存上面提到的 Customer 和 Account 实体,以及 Customer 和 Account 实体之间的关系:

_context.Set<Account>().Add(acctFour);

_context.SaveChanges();

随着执行点的继续,我们最终得到以下代码摘录:

            List<System.Data.Entity.Core.Objects.ObjectStateEntry> allAddModDelItems = ((IObjectContextAdapter)_context).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).ToList();

            foreach (var osEnt in allAddModDelItems)
            {

            }

上面的代码摘录检索所有对象以及已添加、修改和删除的对象之间的关系。

我已经检查了客户的 System.Data.Entity.Core.Objects.EntityEntry 和帐户的 System.Data.Entity.Core.Objects.EntityEntry,它们具有有效的业务数据。

遗憾的是,System.Data.Entity.Core.Objects.RelationshipEntry 的 Entity 为 null 而 EntityKey 为 null 这似乎是错误的,因为 System.Data.Entity.Core.Objects.RelationshipEntry 应该反映两者之间的关系我创建的 Account 和 Customer 对象。 为什么 System.Data.Entity.Core.Objects.RelationshipEntry 错误?也就是说,为什么 System.Data.Entity.Core.Objects.RelationshipEntry 的 Entity 和 EntityKey 属性为空?

【问题讨论】:

    标签: c# asp.net entity-framework orm change-tracking


    【解决方案1】:

    http://msdn.microsoft.com/en-us/library/system.data.objects.objectstateentry.entity%28v=vs.100%29.aspx

    当 ObjectStateEntry 与 RelationshipSet 条目而不是实体类型实例相关联时,Entity 属性返回 null。

    因此,Entity 和 EntityKey 属性为 null 是有意义的

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2011-09-09
      • 1970-01-01
      • 2014-12-08
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多