2

我已经得到了一家商店,看起来像这样表外键/自身关联?

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

一个T恤将存在于表中为-1的的ParentId存储库存表。大小和颜色的任何变化都将与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 

是它在所有可能的,我可以指定某种外键或关联的地方,当我使用这个数据库实体框架,我可以对这个实体导航属性,将列出所有的库存实体的子库存?

回答

4

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

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

+0

或者,您可以将ParentID放在另一个表中,以便您不必为其创建幻数。在我看来,最好避免可空的外键。 – sqlvogel 2010-09-28 09:31:02

+0

在我的也是,但这是我坚持从公司的表结构。尽管如此,谢谢:-) – benwebdev 2010-09-28 10:50:44