繁体   English   中英

EF7中的多对多关系-选择查询以获取包含相关数据的列表

[英]Many-to-Many Relationships in EF7 - Select query for a list including related data

我正在建立一个在内容->类别表上具有以下多对多关系的博客。 我使用以下代码在EF7中生成表:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

但是,当我尝试加载类别列表时,包括如下所示的与EF7查询相关的内容,我收到了错误消息。

categories = await _db.Categories
                      .Include(c => c.Categorization)
                      .ThenInclude(c => c.Content)
                      .OrderByDescending(c => c.Categorization.Count)
                      .ToListAsync();

这是调用此方法时得到的错误页面。

处理请求时,数据库操作失败。

AggregateException:发生一个或多个错误。 AggregateException:发生一个或多个错误。 AggregateException:发生一个或多个错误。 AggregateException:发生一个或多个错误。 SqlException:无效的列名称'Id'。 对于ApplicationDbContext Scaffold,有待处理的模型更改,这些更改将进行新的迁移,并从命令行将其应用于数据库:

 dnx ef migrations add [migration name] dnx ef database update 

有趣的注意:当我删除行时

 .Include(c => c.Categorization).ThenInclude(c => c.Content)

它有时会正常工作,就像在加载分类中一样,但是这种情况始终不会发生,有时分类不会加载,并且在生成的枚举中的每个Category类中,我对分类的引用都为空。

错误消息说明了一切。 SqlException:无效的列名称'Id'

您的数据库与项目上的模型不同。 如果启用了数据库迁移,请运行以下命令

dnx ef migrations add [migration name] 
dnx ef database update

如果您不想使用数据库迁移,则必须更新数据库上的模型以匹配您的模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM