仅包含实体框架代码的基本类型

时间:2010-10-14 20:03:46

标签: c# entity-framework-4 code-first ef4-code-only

我在实体框架的仅代码模型中遇到“基本类型”的问题很多。我在实体框架的仅代码模型中的'基本类型'遇到了很多麻烦。

当我尝试使用带有DbContext的{​​{1}}运行此代码时,出现以下错误。

  

A导航属性'Flags'映射到两个不同的连接表'page.flags'和'template.flags'。只能存在导航属性的一个映射

这对我说的是我无法映射继承的属性。这对很多面向对象的代码设计来说非常突破。有没有已知的补救措施?我意识到我可以使布局非抽象,并为它提供支持,但很明显这不是域模型的意图。抽象类是基础,而不是存储的模型。

我想补充一点,如果我将DbSet<Template>放在IList<Flag>类中,则此代码会运行。即使通过继承,Template字段仍然有效。我不明白为什么会这样。有人可以开导我吗?

Id

1 个答案:

答案 0 :(得分:1)

当您为Template实体使用基类型时,您还必须在映射中对此继承进行建模。这意味着您必须为Layout编写配置,该配置将映射Id和Flags以及将映射Name的Template的配置。在EF中有几种映射继承的方法。您应该检查Table per Hiearchy

修改:根据您的评论,您正在寻找Table per Class + examples for CTP4

编辑2:好的。我使用抽象父类中定义的导航属性测试了您的场景,如果您尝试将其映射到多个表,它确实不起作用。