EF4:使用POCO将表拆分为两个实体 - 为什么我会得到异常?

时间:2011-03-17 17:51:15

标签: entity-framework entity-framework-4 lazy-loading poco

我有一个表“课程”映射到两个实体“课程”“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文件。

1 个答案:

答案 0 :(得分:0)

将自编写的POCO与模板生成的POCO进行比较后, 我注意到Fix___方法,它们用于修复导航属性 一些所有其他类型的关系(一对多,多对多,继承)如何 使用虚拟属性和延迟加载 只有表格分成一对一的关系。

无论如何 - 修复是使用t4生成的POCO而不是自编写的POCO与简单的{get;组; } properties。