【问题标题】:Entity Framework - Foreign key constraints not added for inherited entity实体框架 - 未为继承实体添加外键约束
【发布时间】:2010-05-25 02:56:12
【问题描述】:

在我看来,EF4 中的继承实体 (TPT) 出现了一种奇怪的现象。

我有三个实体。 1. 资产 2. 财产 3. 活动

属性是资产的派生类型。 属性有许多活动(多对多)

在我的 EDMX 中对此进行建模时,一切似乎都很好,直到我尝试将新属性插入数据库。如果该属性不包含任何 Activity,它可以工作,但是当我向新属性添加一些新 Activity 时,一切都会崩溃。

事实证明,经过 2 天的网络爬网和摆弄,我注意到在 EF 存储 (SSDL) 中,实体之间的一些约束在更新过程中没有得到体现。

仅显示链接属性和活动的Property_Activity 表 一个约束 FK_Property_Activity_Activity 但 FK_Property_Activity_Property 原为 不见了。

我知道这是一个实体框架异常,因为当我将数据库中的关系切换为:

资产 Asset_Activity 活动

更新后,所有外键约束都被拾取并且保存成功,无论新属性中是否有活动。

  1. 这是有意的还是 EF 中的错误?

  2. 如何解决这个问题?

  3. 我应该完全放弃继承吗?

【问题讨论】:

    标签: entity-framework self-tracking-entities


    【解决方案1】:
    1. 不是一个糟糕的视觉设计师,而是一个糟糕的视觉设计师。
    2. 通常最好手动管理实体 XML。
    3. 没有继承适用于许多情况。

    基本上,我在视觉设计器中使用数据库中的更新,但知道设计器有其怪癖。我只是使用数据库中的更新来消除我想要的基础知识。然后我自己进入 Entity XML 并按照我想要的方式清理它。需要注意的是,复杂类型对设计师来说是一件痛苦的事。如果您打算使用复杂类型,请准备好学习您的 Entity XML。

    【讨论】:

    • 我有时只是删除 edmx 文件并重新创建它。
    • 是的,在设计师添加了比我需要的更多的废话之后,我也不得不这样做。回到起点比尝试根据设计师添加和省略的内容进行押韵或推理要容易。
    • 如果有人愿意推测,MS 团队是否会对此进行改进?一个很好的例子是 RC 中的 Designer 将 StoreGenerated ="Identity" 添加到链接实体。
    • 我想他们会在设计师身上多做一些工作,但事实是,力量在于框架本身,而且框架设计得非常好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2015-08-25
    • 2011-05-19
    相关资源
    最近更新 更多