无法使用include()返回视图

时间:2011-10-07 04:08:01

标签: asp.net-mvc database entity-framework razor include

ASP.net MVC3 Razor EF

当我这样做时,它有效:

    public ViewResult Index()
    {
        return View(db.Songs.Include("Artist").ToList());
    }

但这不是:

    public ViewResult Index()
    {
        return View(db.Artists.Include("Song").ToList());
    }

我收到此错误:

指定的包含路径无效。 EntityType“MVCProject.Models.Artist”未声明名为“Song”的导航属性。

知道为什么吗?如果您需要更多信息/代码请提及哪些。但请告诉我这样的事情会发生什么,以及如何解决。它让我发疯了。

感谢。

艺术家课程:

public class Artist
{
    public int ArtistID{ get; set; }
    public string Name { get; set; }
    public IQueryable<Song> Songs{ get; set; }
}

2 个答案:

答案 0 :(得分:2)

public IQueryable<Song> Songs{ get; set; }替换为public virtual ICollection<Song> Songs{ get; set; }

public class Artist
{
    public int ArtistID{ get; set; }
    public string Name { get; set; }
    public virtual ICollection<Song> Songs{ get; set; }
}

然后

return View(db.Artists.Include("Songs").ToList());

答案 1 :(得分:0)

你可能有歌曲(复数)作为Artist类的导航属性。所以,return View(db.Artists.Include("Songs").ToList());应该有效。如果不是 - 您需要显示艺术家的模型类