我有一个表“课程”映射到两个实体“课程”和“CourseDetails”。
两者都有 POCO 类,其中包含虚拟导航属性
两个实体使用相同的ID(课程上的身份但不在CourseDetail上)
实体之间的映射是“参照完整性约束”,不在“映射”窗口中
课程是原则约束。
我正在使用 LazingLoading 和 ProxyCreationEnabled 。
调用 context.SaveChanges()后,连接看起来很好(ID,引用和数据)。
从context.Courses中的循环中访问course.CourseDetails时,我得到Course的构造函数创建的默认空CourseDetails而不是实际的CourseDetails数据!?
当我调用 context.LoadProperty(当然,c => c.CourseDetails)时,我收到 InvalidOperationException 并显示以下消息:
“ 违反了多重性约束。关系'OrmComparisons.EFPocos1.CourseDetailsCourse'的角色'CourseDetails'具有多重性1或0..1。 ”
问题1:为什么course.CourseDetails为空?
问题2:为什么我收到例外?
问题3:我应该做什么呢?
如果有人想看,我可以分享解决方案+ sql文件。
答案 0 :(得分:0)
将自编写的POCO与模板生成的POCO进行比较后, 我注意到Fix___方法,它们用于修复导航属性 一些所有其他类型的关系(一对多,多对多,继承)如何 使用虚拟属性和延迟加载 只有表格分成一对一的关系。
无论如何 - 修复是使用t4生成的POCO而不是自编写的POCO与简单的{get;组; } properties。