我正在构建一个博客,内容上有以下多对多关系 - >类别表。我使用以下代码在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的更改为这些更改支持新的迁移 更改并从命令行将它们应用于数据库:
dnx ef migrations add [migration name] dnx ef database update
有趣的说明:当我删除该行
.Include(c => c.Categorization).ThenInclude(c => c.Content)
它有时会正常工作,就像加载分类一样,但这并不总是会发生,有时分类不会加载,我在生成的可枚举中的每个Category类中只有分类的空引用。
答案 0 :(得分:0)
错误消息说明了一切。 SqlException:列名'Id'无效
您的数据库与项目中的模型不同。如果启用了数据库迁移,则运行命令
dnx ef migrations add [migration name]
dnx ef database update
如果您不想使用数据库迁移,则必须更新数据库中的模型以匹配您的模型。