【问题标题】:ADO.Net EF, Mapping IssueADO.Net EF,映射问题
【发布时间】:2011-07-24 01:56:31
【问题描述】:

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

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

多重性在角色中无效 关系中的“图书馆项目” 'MediaItemLibraryItem'。因为 从属角色属性不是 关键属性,上界 依赖角色的多重性 必须是 *。

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

任何帮助将不胜感激!这是截图:

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

【问题讨论】:

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


    【解决方案1】:

    您当前的设置无法实现这种多样性。您当前的设置说:一个 MediaItem 可以在多个 LibraryItem 中。这意味着 MediaItem 是主体,LibraryItem 是依赖的,因此它具有 FK 属性 MediaItem。如果您想要反向关系,则含义将是:一个 LibraryItem 可以有多个 MediaItem。 在这种情况下,LibraryItem 将成为主体,MediaItem 将成为依赖关系,因此您还必须更改您的实体:

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

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多