![](/img/trans.png)
[英]Entity Framework 6.20, keep having to change System.Data.Objects to System.Data.Entity.Core.Objects;
[英]Why is the Entity Framework System.Data.Entity.Core.Objects.RelationshipEntry Wrong? ( For Change Tracking)
所有:
我们公司正在研究使用实体框架的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>() };
为了简短起见,我们还调用了类似于以下代码的一行,以便实体框架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应该反映客户和客户之间的关系。我创建的对象。 为什么System.Data.Entity.Core.Objects.RelationshipEntry错误? 换句话说,为什么System.Data.Entity.Core.Objects.RelationshipEntry的Entity和EntityKey属性为空?
当ObjectStateEntry与RelationshipSet条目而不是实体类型实例相关联时,Entity属性返回null。
因此,将Entity和EntityKey属性设置为null是有意义的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.