ADO.Net EF,Mapping Issue

时间:2011-03-27 21:29:06

标签: database entity-framework inheritance ado.net mapping

我有以下实体,我遇到的问题是我有一个继承自MediaItem的类型游戏。我已将游戏集合传递给视图,我希望能够将游戏评级(存储在LibraryItemRating中)显示为评级。目前我不能这样做,因为当我到Game.Libraryitems我有一个集合..

我希望与MediaItem的LibraryItems关联为1 - *而不是* - 1。 唯一合理的参考约束是Principal:MediaItem(MediaItemID)和Dependent:(MediaItem)。设置此项时,我只能有* - 1关系,否则我会收到这两个错误:

  

多重性在角色中无效   'LibraryItem'处于关系中   'MediaItemLibraryItem'。因为   依赖角色属性不是   关键属性,上限   依赖角色的多样性   必须是*。

  

多重性在角色中无效   'MediaItem'的关系   'MediaItemLibraryItem'。有效值   用于主要角色的多重性   是'0..1'或'1'。

任何帮助将不胜感激!以下是截图:enter image description here

注意:MediaItem(MediaItemID)映射到LibraryItem(MediaItem)

1 个答案:

答案 0 :(得分:2)

你不能将这种多样性与当前的设置相提并论。您当前的设置说: One MediaItem可以位于多个LibraryItems中。这意味着MediaItem是主体且LibraryItem是依赖的,因此它具有FK属性{{1} }。如果你想要反向关系,意思是:一个LibraryItem可以有多个MediaItems。在这种情况下MediaItem将成为主体,LibraryItem将变为依赖,因此你也必须改变你的实体:

  • 删除MediaItemLibraryItem之间的关系。它还应该删除双方的导航属性。
  • 删除MediaItem实体中的MediaItem属性。
  • LibraryItem FK属性添加到LibraryItem实体
  • MediaItemLibraryItem之间创建新关联,并映射参考约束以满足您的需求。