0

我们的问题域具有以下表结构 -

  1. Questionnaire - QuestionnaireID(主键)、QuestionID

  2. 问题 = QuestionID、Description 和其他 12 个属性。

  3. QuestionGroup = QuestionGroupID、Description 和 5 个其他属性。

Questionnaire 表的 QuestionID 与 Question 和 QuestionGroup 表相关。


现在有了实体框架,我有了共同的结构

  1. Questionnaire - QuestionnaireID(主键)、QuestionID、QuestionDetails(QuestionBase 类型的导航属性)。

  2. QuestionBase(Question 和 QuestioGroup 的父类)

  3. 问题

  4. 问题组

我如何将它们映射在一起,以便 Questionnaire 的 QuestionDetails 属性将包含来自 Question 或 QuestionGroup 使用实体框架代码优先的值。

没有更改数据库的选项,因为它已经存在,使用 EF 新版本没有问题。

是否可以这样做?

谢谢

4

1 回答 1

1

如果您无法更改数据库,则根本无法映射QuestionDetails导航属性和相关的QuestionId外键属性,因为您不能拥有针对两个相关表的单个导航属性。仅当QuestionBase实体也具有相关表并且将其映射为 TPT 继承时,它才会起作用。Question此外,两个表中的主键列QuestionGroup必须具有相同的名称。

我怀疑您对QuestionIDinQuestionnaire表有引用约束(同时满足Questionand的关系QuestionGroup)。这是第一个危险信号,它应该告诉您您将无法映射它。

于 2012-07-04T16:59:18.883 回答