我正在构建一个博客,在内容->分类表上有以下多到多的关系。我使用了以下代码来生成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迁移添加迁移名称dnx数据库更新
有趣的注意:当我删除这一行时
.Include(c => c.Categorization).ThenInclude(c => c.Content)它有时会正常工作,就像加载分类一样,但是这并不总是发生,有时分类不会加载,而且我在生成的枚举中的每个类别类中只有空引用。
发布于 2016-02-02 13:49:58
错误信息说明了一切。SqlException:无效列名'Id‘
您的数据库与项目中的模型不同。如果启用了数据库迁移,则运行以下命令
dnx ef migrations add [migration name]
dnx ef database update如果不想使用数据库迁移,则必须更新数据库中的模型以与模型匹配。
https://stackoverflow.com/questions/35151211
复制相似问题