2012-04-12 53 views
0

在它們下面的MVC 3音樂商店的例子。ASP.NET MVC音樂商店問題

Public Class Album 

Public Property GenreId AS Integer 

... 

Public Overidable Property Genre as Genre 

End Class 

實體框架似乎是非常漂亮的,拿起那GenreId是爲體裁表PK。因此,「Album」的SQL表具有GenreId作爲列,當我們加載專輯storeDB.album.find(x)時,它還將加載「流派」實體。

我的問題是,如果我們希望有相同類型的第二個對象。例如,如果每張專輯都有一個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

您需要爲使用數據註釋或流暢API來配置的關係。假設有上Genre實體命名MainGenreAlbumsBackupGenreAlbums兩個收集屬性,可以使用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

優秀!謝謝你,完美的工作。我試圖找出流利的API,但DA的就好了。我沒有使用「InverseProperty」,因爲我沒有真正理解那是什麼,但它只是適用於指向相應的「整數」的ForeignKey。再次感謝。 – 2012-04-12 13:34:45