我的数据库中有这些表格。
alt text http://img166.imageshack.us/img166/3133/testdbschemafy5.png
使用Entity Framework我想有类似的东西:
alt text http://img166.imageshack.us/img166/5721/testdbschemaefdv5.png
我使用了每层次表继承,因此我为高级用户添加了一个新实体,并将其映射到具有IsPremiumUser属性条件的用户实体。我想将PremiumAccount表关联到PremiumUser实体,但它不会像我这样做: - /我收到此错误消息:
错误3021:从第113行开始映射片段中的问题:表PremiumAccount中的以下每列都映射到多个概念侧属性: PremiumAccount.UserID映射到
我的问题有解决办法吗?我可以将PremiumAccount实体与继承的实体相关联吗?还有另一种方法吗?
答案 0 :(得分:2)
我认为应该删除子类型的PK字段(因为它从其超类型继承它)。
那就是说,这不是一个好的继承候选人。只有在实体无法更改类型时,才应执行实体继承。这更像是一个“角色”候选人,所以真正的1:1关系。问题是用户可能会定期丢失/获得Premium角色,但您无法更改现有实体实例(==表行)的类型,即使您似乎可以通过简单地更改数据库。继承映射是关于严格的规则,你不能弯曲它们,因为实体中的继承是关于解释数据库中的数据,因为关系模型不知道继承的概念(尽管一些数据库通过允许在DDL SQL中继承来“欺骗”像postgresql)