2012-04-14 54 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