0

我有一个创建的实体框架。我正在尝试将新歌曲和新专辑添加到表中。例如,当我尝试添加一首新歌曲时,我使用了下面的方法,它告诉我 s.Artist.ArtistName 上的“对象引用未设置为对象的实例”。我有一个在下拉菜单中显示艺术家列表的网络表单,现在我想为该艺术家添加一首新歌。我怎么做?

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;
    }
}

艺术家表的框架有 ArtistID、ArtistName 和 WikiPediaURL。它具有专辑和歌曲的导航属性。它以 1 对多的形式与歌曲相关联,以 1 对多的形式与专辑相关联。

它有一个 Song 表,其中有一个 SongID、SongTitle 和 Artist_ArtistID。它具有艺术家和专辑的导航属性。它以多对多的方式链接到相册表。

最后,Album 表有一个 AlbumID、AlbumTitle、CoverArt、Year、Genre、MimeType 和 Artist_ArtistID。它具有 Artist 和 Song 的导航属性。

4

1 回答 1

0

Artist 属性不会自动创建 - 您必须首先创建艺术家的实例:

    var s = new Song();
    s.SongTitle = SongName;
    s.Artist = new Artist();
    s.Artist.ArtistName = artistName;
于 2012-04-14T20:04:22.947 回答