C# 为什么实体框架System.Data.Entity.Core.Objects.RelationshipEntry错误?(用于更改跟踪)

C# 为什么实体框架System.Data.Entity.Core.Objects.RelationshipEntry错误?(用于更改跟踪),c#,asp.net,entity-framework,orm,change-tracking,C#,Asp.net,Entity Framework,Orm,Change Tracking,全部: 我们公司正在开发一个使用实体框架的ASP.NET应用程序。 实体框架模型第一种方法用于创建数据库表和POCO 此外,我们正在使用实体框架和NUnit框架的努力测试工具来进行单元测试 目前,我们正在ASP.NET应用程序的客户和帐户业务实体上尝试一些CRUD操作 每个客户都可以选择最多拥有一个帐户。 以下是数据库关系图中两个表之间的关系: 我们的应用程序还跟踪实体的更改跟踪以及实体之间的关系 我们有以下代码示例,其中包含填充的客户和帐户业务条目: Customer cus

全部:

我们公司正在开发一个使用实体框架的ASP.NET应用程序。 实体框架模型第一种方法用于创建数据库表和POCO 此外,我们正在使用实体框架和NUnit框架的努力测试工具来进行单元测试

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

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

我们的应用程序还跟踪实体的更改跟踪以及实体之间的关系

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

        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>() };
Customer custFour=new Customer{CustomerID=“4”,Orders=new HashSet(),CustomerDemographics=new HashSet(),CompanyName=“FC Barcelona”,ContactName=“Lionel mesi”,ContactTitle=“current top basket ball player”,Address=“344 testing street”,City=“布宜诺斯艾利斯”,Region=“俄克拉荷马”,PostalCode=“4498”,Country=“阿根廷”,电话=“23449494”,传真=“33325”};
Account acctFour=新帐户{UserName=“lmessi”,Password=“myteamlostworldcupmatch”,Customer=custFour,AccountRoleMaps=new HashSet();
为了保持简洁,我们还调用了一行代码,如下所示,以便Entity Framework DbContext可以保存上述客户和帐户实体,以及客户和帐户实体之间的关系:

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

_context.SaveChanges();
\u context.Set().Add(acctFour);
_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)
            {

            }
列出allAddModDelItems=((IObjectContextAdapter)上下文).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).ToList();
foreach(所有模块中的变量)
{
}
上面的代码摘录检索已添加、修改和删除的所有对象以及对象之间的关系

我已经检查了客户的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应该反映我创建的帐户和客户对象之间的关系。 为什么System.Data.Entity.Core.Objects.RelationshipEntry错误?换句话说,为什么System.Data.Entity.Core.Objects.RelationshipEntry的实体和EntityKey属性为空?

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

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