1

我正在尝试启动一个需要每个层次结构的表的项目。我过去用 NHibernate 做过这个,但我们希望避免手动编辑 XML 映射文件 - 所以正在尝试使用实体框架和它的设计器。

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

尝试从“<添加表或视图>”下拉列表中选择表时,我无法选择任何表,而是列表显示“(空)”。

努力失败

我与本教程的唯一偏差是我没有从示例数据库中生成 Person 表,据我所知这不应该有什么不同(我们想从模型中生成数据库,而不是反之亦然)。

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

4

1 回答 1

1

如果您需要从模型生成数据库,则在映射中看不到任何表,因为在生成数据库时会生成映射和有关表的信息。EDMX 具有相当复杂的结构(比NHibernate 非常简单的hbm 文件复杂得多)。复杂性甚至更糟,因为 EDMX 没有任何隐含的内容 - 必须描述所有内容,并且必须描述 3 次。

EDMX 由三部分组成:

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

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

于 2011-12-30T14:43:40.457 回答