无法为鉴别器选择表(模型优先)

时间:2011-12-30 03:36:01

标签: entity-framework inheritance ef-model-first table-per-hierarchy

我正在尝试启动一个需要每个表格的项目。我以前用NHibernate完成了这个,但我们想避免手工编辑XML映射文件 - 所以试图使用Entity Framework和它的Designer。

我一直在网上关注这个例子: http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-1.aspx

尝试从“< Add Table or View>”中选择一个表时下拉列表,我无法选择任何表格,而是列表显示“(空)”。

failing hard

我从教程中得到的唯一偏差是我没有从示例数据库中生成Person表,据我所知,这应该没有区别(我们希望生成数据库关闭模型,反之亦然)。

不确定表格需要满足哪些条件才有资格添加鉴别器...

1 个答案:

答案 0 :(得分:1)

如果需要从模型生成DB,则无法在映射中看到任何表,因为生成数据库时会生成映射和有关表的信息。 EDMX具有相当复杂的结构(比NHibernate的非常简单的hbm文件复杂得多)。复杂性更加严重,因为EDMX没有隐含的东西 - 必须描述所有内容,必须对其进行三次描述。

EDMX由三部分组成:

  • CSDL - 您在设计师(类)中看到的概念模型
  • SSDL - 数据库描述 - 可以在模型浏览器中浏览,但它是只读的
  • MSL - SSDL和MSL之间的映射(这是您尝试在该窗口中编辑的内容)。

当您打算使用模型优先(在设计器中绘制实体并生成数据库)时,您只定义CSDL,其他所有内容都是使用SQL为数据库生成的。您可能还需要另一个用于生成数据库的模板/工作流,因为我猜它默认使用Table-per-type继承。检查Database generation power pack - 它应包含TPH的模板。