【发布时间】:2011-04-01 20:41:53
【问题描述】:
根据我最近收到的一个问题 (Database design problem) 的出色建议, 我在我的数据库中合并了一个超类型/子类型模式 为 MVC2 应用程序构建。 我将使用实体框架向 MVC 提供模型。
超类型是出版物,子类型是文章, 博客文章等 每个子类型表都有一个 2 列的复合主键(pub_id、 pub_type),外键引用对应的列 超类表
出于数据完整性目的(请参阅关于已接受解决方案的冗长 cmets 到原始问题)超类型表不应该包括 pub_type 在其主键中(与子类型表不同),
这就是实体框架似乎无法发挥作用的地方。从现有数据库生成 .edmx 文件时收到的警告:
关系“FK_Articles_Publications”的列不是 关系的主要方面的表的键的一部分。关系被排除在外。
(等等)
问题: 有没有办法诱使实体框架映射给定的关系 我想要的外键(或者我必须妥协数据库设计和 在超类型表上设置复合键)?
如果不是,这会增加额外的问题,即要求加入任何 其他,非子类型表(和我计划的几个)到超类型 表要求我有与 pub_id 和 pub_type。例如,我希望一个主题表能够关联 通过超类型表发布任何类型的出版物——我需要 将 pub_type (冗余)存储在主题表的列中。
我对 EF(和 ORM)还很陌生,但它的力量很诱人,我不想放弃它。
【问题讨论】:
标签: entity-framework database-design