2012-04-12 10 views
0

mvc 3ミュージックストアの例では、以下のことを行っています。ASP.NET MVC Music Store質問

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"エンティティも読み込まれます。

私の質問は、同じタイプの2番目のオブジェクトを作成する場合です。たとえば、各アルバムにprimaryGenreとsecondaryGenreがある場合はどうなりますか?私はこのようなことをすることができると思います。

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を自動的に読み込むような正しい方向で私を指し示すことができますか?ありがとうございました。

答えて

1

データアノテーションまたはFluent APIのいずれかを使用してリレーションシップを構成する必要があります。 GenreエンティティにMainGenreAlbumsBackupGenreAlbumsの2つのコレクションプロパティがあると仮定すると、ForeignKeyInverseProperty属性を使用してリレーションシップを構成できます。

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 
+0

優秀!!ありがとう、それは完璧に働いた。私はFluent APIを理解しようとしていましたが、DAはうまくいきました。私はそれが何であるか本当に理解していないので、 "InverseProperty"を使用しませんでしたが、適切な "Integer"を指すForeignKeyだけで動作しました。再度、感謝します。 –