代码之家  ›  专栏  ›  技术社区  ›  Cody C

实体框架与非关键字段的关联

  •  6
  • Cody C  · 技术社区  · 15 年前

    是否可以在实体框架中创建关联B/T 2非关键字段?

    示例:以遗留应用程序中的两个表为例(即键/结构不能更改)

    Order (
        OrderId : int : PK
        OrderNo : varchar
    )
    
    OrderDetails (
        DetailRecordId : int : PK
        OrderNo : varchar
    )
    

    在实体框架中,我想创建一个关联b/t Order OrderDetails OrderNo 字段,它不是数据库中表或FK关系的主键。

    在我看来,这不仅应该是容易做到的,而且也是使用像英孚这样的东西的一个原因。但是,它似乎只希望允许我使用实体键创建关联。

    3 回复  |  直到 7 年前
        1
  •  6
  •   rae1    12 年前

    实体框架允许您 声称 列是键,FK约束存在于数据库中实际不存在的地方。

    这是因为如果需要,可以由您和 关于数据库。

    然后,EF将与数据库交互,就好像这些键和外键确实存在一样。

    这应该有效,但是关于引用完整性的所有常规警告都适用。

    看到我 Entity Framework Tips

    希望这有帮助。

        2
  •  1
  •   Justin Niessner    15 年前

    使用非键字段定义关系的问题是,不能保证键可以正确导航。这可能导致在两个实体之间存在一对一关系的情况,其中有多个可能的行用于填充关系。

    …从数据库关联数据时,关系应始终基于键。键强制引用完整性。

        3
  •  0
  •   parfilko    11 年前

    还有一个解决方法:

    创建不包含pk的视图vorder并从中创建实体。 将此实体中的pk设置为orderno

    现在您可以创建关联