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)
它有时会正常工作,就像加载分类一样,但是这并不总是发生,有时分类不会加载,我只有生成的枚举中每个类别类中的分类的空引用。
错误消息说明了一切。Sql异常:列名"Id"无效
您的数据库与项目中的模型不同。如果启用了数据库迁移,则运行命令
dnx ef migrations add [migration name]
dnx ef database update
如果不想使用数据库迁移,则必须更新数据库上的模型以匹配模型。