【发布时间】:2010-08-09 18:18:32
【问题描述】:
我想要一个代表一个人的表,并有许多其他表(例如学生/教师)使用 Person 表来存储与一个人相关的信息。不幸的是,当我尝试在 Student 或 Teacher 类之间添加关联时,实体框架似乎不喜欢它,我不明白为什么。 Person 表包含一个名为 ParentEntityID 的列,它等于 StudentEntityID 或 TeacherEntityID。在理想的世界中,我希望能够通过 Student.Person.FirstName 而不是 Student.Entity.Person1.FirstName 来引用 Person 表。尝试将 Student/Teacher 表连接到 Person 表时,.Net 返回的错误是:
错误 3007:映射问题 从第 265、289 行开始的片段: 非主键列 [ParentEntityID] 被映射到 两个片段到不同的概念 侧面属性 - 数据不一致 是可能的,因为相应的 概念方面的属性可以是 独立修改。
我正在使用的实际数据库有点复杂,并且有许多表连接到实体表,这使得我的对象模型非常模糊,希望能够通过使用实体来清理它框架。
我不是数据库专家,通常我在前端工作......我想做的事情可以完成还是有更好的解决方案?
我在 Web 应用程序中使用 VB.Net 3.5。
alt text http://commonfish.com/images/2010-stackoverflow1.png
更新...
为了内化我可以形成的不同类型的关系,我一直在玩这个简单的例子,并提出了以下可能性: alt text http://commonfish.com/images/2010-stackoverflow2.png
alt text http://commonfish.com/images/2010-stackoverflow3.png
我无法在 Student 和 Address 表之间建立关联的原因是数据库中没有强制执行这种关系。如果我想要这两个表之间的关联,我需要重新考虑我的数据库的设计。那是对的吗? Entity Framework 不支持我想做的事?
另外,从 Pratt 先生那里看a page linked,听起来 .Net 4 支持外键关联,我认为这就是我想要做的。我对那篇文章的理解正确吗?
【问题讨论】:
标签: sql-server vb.net entity-framework