2012-04-14 35 views
0

我有一個創建的實體框架。我試圖向表中添加新歌曲和新專輯。例如,當我嘗試添加新歌曲時,我使用了下面的方法,它告訴我s.Artist.ArtistName上的「對象引用未設置爲對象的實例」。我有一個網絡表單,在下拉菜單中顯示藝術家列表,現在我想爲該藝術家添加一首新歌。我怎麼做?ASP.NET使用導航屬性將數據加載到表中

public Song AddNewSongNav(String ArtistName, String SongName) 
{ 
    using (var context = new MyEntities()) 
    { 
     var s = new Song(); 
     s.SongTitle = SongName; 
     s.Artist.ArtistName = ArtistName; 
     s.Artist.WikipediaUrl="http://en.wikipedia.org/Testing"; 

     context.Songs.AddObject(s); 
     context.SaveChanges(); 
     return s; 
    } 
} 

藝術家表格的框架有藝術家ID,藝術家名稱和WikiPediaURL。它擁有專輯和歌曲的導航屬性。它被連接到宋作爲1到許多和專輯作爲1到許多。

它有一個歌曲表,它有一個SongID,SongTitle和Artist_ArtistID。它具有Artist和Album的導航屬性。它作爲多對多鏈接到相冊表。

最後,Album表具有AlbumID,AlbumTitle,CoverArt,Year,流派,MimeType和Artist_ArtistID。它具有藝術家和歌曲的導航屬性。

回答

0

藝術家屬性不會自動創建 - 你必須首先創建了藝術家的一個實例:

var s = new Song(); 
    s.SongTitle = SongName; 
    s.Artist = new Artist(); 
    s.Artist.ArtistName = artistName; 
+0

感謝您的快速反應。這讓我可以一起添加新的藝術家和歌曲。我想要做的是讓用戶從下拉列表中選擇一位藝術家,然後我想將一首歌曲與該藝術家相關聯。當我這樣做時,它會創建一個新的藝術家並將其與該歌曲相關聯。你有什麼想法,我會如何引用已經在桌上的藝術家,並將其與新歌關聯起來? – Joe24 2012-04-14 22:43:35