Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF加载相关数据问题_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# EF加载相关数据问题

C# EF加载相关数据问题,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两个实体: public class Album { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual int GenreId { get; set; } public virtual int ArtistId { get; set; } public virtual string CoverURL { get; set

我有两个实体:

public class Album
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int GenreId { get; set; }
    public virtual int ArtistId { get; set; }
    public virtual string CoverURL { get; set; }
    public virtual int Cost { get; set; }
    public virtual Artist Artist { get; set; }
    public virtual Genre Genre { get; set; }
}

public class Genre
{
    public int Id { get; set; }       
    public string Name { get; set; }
    public virtual IEnumerable<Album> Albums{get;set;}
    public int AlbumCount { get { return Albums.Count(); } }
    public Genre()
    {
        Albums = new List<Album>();
    }
}
我在类型和专辑之间有一对多映射(一张专辑只能有一个类型,但一个类型可以属于多个专辑)。当我尝试获取唱片集详细信息(包括流派nav.property)时,它会给我预期的数据。但当我尝试显示所有类型时,它总是给我0作为专辑计数。我怀疑有约束力的问题,但我无法找出在哪里。如果您能帮助查找问题,我们将非常高兴。

您尝试过这个吗

public ActionResult Index()
{
    var genres = db.Genres.Include(x => x.Albums).ToList();
    return View(genres);
}

对于导航属性,必须使用
ICollection
而不是
IEnumerable

public virtual ICollection<Album> Albums { get; set; }


编辑:有关集合类型的更多信息,请阅读此内容。基本上,
ICollection
继承自
IEnumerable
,并允许您修改您的集合(
IEnumerable
的主要目的是迭代)。

您尝试过这个。但它给了我语法错误。可能我使用的EF框架不支持这一点。它需要一个“字符串路径”作为参数。您尝试过使用字符串吗?如下所示:var genres=db.genres.Include(“Albums”).ToList();指定的包含路径无效。EntityType“MvcMusicStore.DAL.Genre”未声明名为“Albums”的导航属性。出现此错误。您是否正确配置了modelbuilder?类似这样的内容:modelBuilder.Entity().HasMany(x=>x.Albums)阅读更多信息:不,我还没有配置。有必要吗?谢谢。这很有效。我是MVC&EF的新手。你能帮我解释一下我的收集和我的数量吗?
public virtual ICollection<Album> Albums { get; set; }
db.Genres.Include(genre => genre.Albums)
db.Genres.Include("Albums")