表外键/关联到自身?

时间:2010-09-27 15:06:00

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

我有一个存储商店库存的表格,如下所示

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

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

1 个答案:

答案 0 :(得分:4)

是的,这很好用。对于一个真实的示例,使用默认设置创建Northwind数据库的模型,并查看员工主管关系。实体框架不会自动获取Supervisor属性名称,但关联本身可以正常工作,您可以手动重命名该属性。

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