【问题标题】:Table foreign key / association to itself?表外键/关联到自身?
【发布时间】:2010-09-27 15:05:59
【问题描述】:

我有一张表,用于存储看起来像这样的商店的库存

InventoryId    int
ParentId       int
ShortDesc      int
...
[other product data]
...

TShirt 将存在于表中,其 ParentId 为 -1。任何尺寸和颜色的变化都将存在于与 ParentID 字段中的原始父 InventoryID 相同的表中。

EG

InventoryID   |ParentID   |ShortDesc
----------------------------------------------------    
111            -1          Skull TShirt
112            111         Skull TShirt Black Small
113            111         Skull TShirt Black Medium
114            111         Skull TShirt Black Large
115            111         Skull TShirt White Small

我是否有可能指定某种外键或关联,当我将此数据库与实体框架一起使用时,我可以在此实体上拥有一个导航属性,该属性将列出所有库存实体的子库存?

【问题讨论】:

    标签: sql-server entity-framework entity entity-relationship ado.net-entity-data-model


    【解决方案1】:

    是的,这很好用。对于现实世界的示例,使用默认设置制作 Northwind 数据库模型,并查看员工主管关系。 Entity Framework 不会自动获取 Supervisor 属性名称正确,但是 Association 本身可以工作,您可以手动重命名属性。

    关于你的具体例子,我怀疑-1。如果这是真实库存记录的真实主键,那很好。如果它是一个表示没有记录的魔法值,则使用 NULL 或使其成为真实记录。为了让实体框架识别这种关系,您需要创建一个真正的数据库外键,因此所有值都必须实际引用记录。

    【讨论】:

    • 或者,您可以将 ParentID 放在另一个表中,这样您就不必为它发明一个幻数。在我看来,最好避免可以为空的外键。
    • 也在我的,但这是我从公司坚持使用的表结构。不过还是谢谢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多