【问题标题】:ASP.NET Loading Data into Table with Navigation PropertyASP.NET 使用导航属性将数据加载到表中
【发布时间】:2012-04-14 19:37:31
【问题描述】:

我创建了一个实体框架。我正在尝试将新歌曲和新专辑添加到表中。例如,当我尝试添加一首新歌曲时,我使用了下面的方法,它告诉我 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;
    }
}

Artist Table 的框架包含 ArtistID、ArtistName 和 WikiPediaURL。它具有专辑和歌曲的导航属性。它以一对多的形式链接到歌曲,以一对多的形式链接到专辑。

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

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回复。这让我可以一起添加新的艺术家和歌曲。我想要做的是允许用户从下拉列表中选择艺术家,然后我想将歌曲与该艺术家相关联。当我执行上述操作时,它将创建一个新艺术家并将其与歌曲相关联。你知道我将如何引用表格中已有的艺术家并将其与一首新歌相关联吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多