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

本文关键字:数据 列表 选择 包含相 查询 关系 EF7 | 更新日期: 2023-09-27 18:32:49

我正在内容->类别表上构建具有以下多对多关系的博客。我使用以下代码在 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();

这是我在调用它时收到的错误页面。

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

聚合异常:发生一个或多个错误。 聚合异常: 发生一个或多个错误。 聚合异常:一个或多个错误 发生。 聚合异常:发生一个或多个错误。 SqlException:列名"Id"无效。 有待定模型 应用程序数据库上下文基架的更改 针对这些的新迁移 更改并将其从命令行应用于数据库:

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

有趣的说明:当我删除该行时

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

它有时会正常工作,就像加载分类一样,但是这并不总是发生,有时分类不会加载,我只有生成的枚举中每个类别类中的分类的空引用。

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

错误消息说明了一切。Sql异常:列名"Id"无效

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

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

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