【问题标题】:Cannot select table for discriminator (model-first)无法为鉴别器选择表(模型优先)
【发布时间】:2011-12-30 03:36:00
【问题描述】:

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

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

当尝试从“”下拉列表中选择表格时,我无法选择任何表格,而是列表显示“(空)”。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    EDMX 由三部分组成:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2012-10-15
      • 2017-07-31
      相关资源
      最近更新 更多