0

在 mvc 3 音乐商店示例中,他们执行以下操作。

Public Class Album

Public Property GenreId AS Integer

...

Public Overidable Property Genre as Genre

End Class

实体框架似乎很漂亮,并且认为 GenreId 是 Genre 表的 PK。因此,“Album”的 SQL 表将 GenreId 作为列,当我们加载专辑 storeDB.album.find(x) 时,它也会加载“Genre”实体。

我的问题是,如果我们想要第二个相同类型的对象怎么办。例如,如果每张专辑都有一个主要流派和一个次要流派怎么办。我认为我们可以做这样的事情。

Public Class Album

Public Property MainGenreId As Integer
Public Overidable Property MainGenre As Genre

Public Property BackupGenreId As Integer
Public Overidable Property BackupGenre as Genre

End Class

我也试过这个......

Public Class Album

Public Property MainGenre_GenreId As Integer
Public Overidable Property MainGenre As Genre

Public Property BackupGenre_GenreId As Integer
Public Overidable Property BackupGenre as Genre

End Class

但是,这些选项都不能正常工作。谁能指出我正确的方向,这样当我通过 storeDB.album.find(x) 加载专辑时,它会自动填充 MainGenre 和 BackupGenre?谢谢你。

4

1 回答 1

1

您需要使用数据注释或 Fluent API 来配置关系。假设实体上有两个名为MainGenreAlbumsand的集合属性,您可以使用and属性来配置关系。BackupGenreAlbumsGenreForeignKeyInverseProperty

Public Class Album

  Public Property MainGenreId As Integer

  <ForeignKey("MainGenreId")>
  <InverseProperty("MainGenreAlbums")>
  Public Overidable Property MainGenre As Genre

  Public Property BackupGenreId As Integer

  <ForeignKey("BackupGenreId")>
  <InverseProperty("BackupGenreAlbums")>
  Public Overidable Property BackupGenre as Genre

End Class
于 2012-04-12T13:03:31.967 回答