entity-framework - EF4 : Splitting a table to two entities using POCOs - why am I getting an exception?

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

我有一张表“类(class)”映射到两个实体“类(class)”“类(class)详细信息”
两者都有带有虚拟导航属性的POCO类。
两个实体使用相同的 ID(类(class)上的身份,但类(class)详细信息上不使用的身份)。
实体之间的映射是“引用完整性约束”,不在“映射”窗口中。
类(class)是约束中的原则。

我正在使用LazingLoadingProxyCreationEnabled

调用context.SaveChanges()后,连接看起来很好(ID、引用和数据)。

当从 context.Courses 的循环中访问 c​​ourse.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/

相关文章:

c# - 在linq查询后检查实体是否为空

java - 使用 @PropertySource 访问 @Lazy 初始化的 @Bean 的公共(public)属性

php - CodeIgniter 事件记录 : Load One Row at a Time

.net - 在 Model First 方法中使用时间戳属性进行 EF 并发处理

javascript - 如何在 Angular 2 中延迟加载模板的一部分?

entity-framework - Entity Framework 4.0 GetChanges() 等效

c# - SQL Server CE Code First 迁移问题

c# - EF 不延迟加载 View

c# - EF4.1 多嵌套实体包含获取 NotSupportedException?

wcf - 虚拟属性是否需要 [DataMember] 属性?