我有一张表“类(class)”映射到两个实体“类(class)”和“类(class)详细信息”。
两者都有带有虚拟导航属性的POCO类。
两个实体使用相同的 ID(类(class)上的身份,但类(class)详细信息上不使用的身份)。
实体之间的映射是“引用完整性约束”,不在“映射”窗口中。
类(class)是约束中的原则。
我正在使用LazingLoading和ProxyCreationEnabled。
调用context.SaveChanges()后,连接看起来很好(ID、引用和数据)。
当从 context.Courses 的循环中访问 course.CourseDetails 时,我得到由 Course 的构造函数创建的默认空 CourseDetails,而不是实际的 CourseDetails 数据!?
当我调用 context.LoadProperty(course, c => c.CourseDetails) 时,我收到一个 InvalidOperationException 消息:
“违反了多重性约束。关系“OrmComparisons.EFPocos1.CourseDetailsCourse”的角色“CourseDetails”具有多重性 1 或 0..1。”
问题1:为什么course.CourseDetails为空?
问题 2:为什么我会收到异常?
问题 3:我应该做什么?
如果有人想看,我可以分享解决方案+sql文件。
最佳答案
将自己编写的 POCO 与模板生成的 POCO 进行比较后,
我注意到 Fix___ 方法,该方法旨在修复导航属性。
一些如何处理所有其他类型的关系(一对多、多对多、继承)
使用虚拟属性和延迟加载。
仅将表拆分为一对一关系。
无论如何 - 修复是使用 t4 生成的 POCO,而不是使用简单的 { get; 自行编写的 POCO放; } 属性。
关于entity-framework - EF4 : Splitting a table to two entities using POCOs - why am I getting an exception?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343104/