GPG*_*GVM 3 c# entity-framework
我知道问题所在:我缺少一个映射来帮助 EF 了解两个表之间的关系,但我没有看到我的错误在哪里。
我有一个使用 EF CF 7 的 Web Api。我可以很好地查询并获取父表数据,但是当我尝试包含相关子数据时,我收到无效列错误。
我的两个表如下所示:
public class Categories
{
private ICollection<SubCategories> _subcat;
public int Id { get; set; }
public string Category { get; set; }
public virtual ICollection<SubCategories> SubCategories
{
get { return _subcat ?? (_subcat = new List<SubCategories>()); }
set { _subcat = value; }
}
}
public class SubCategories
{
public int Id { get; set; }
public string SubCategory { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
上面的类与我的数据库模式匹配,除了SubCategories 表有一列 CategoryId 并且它是父表 Id 列的 FK。
我的存储库查询如下所示:
return _context.Categories.Include(i => i.SubCategories).ToList();
Run Code Online (Sandbox Code Playgroud)
现在这个错误让我困惑......我隐约记得它与 EF 连接名称有关。在那次经历中,有一个基类定义了 Id,因此当我在类中定义它时,它发生冲突,但这里不是这种情况吗?
列名“CategoriesId”无效。
所以我用谷歌搜索并阅读了几篇文章,但要么我不完全理解,要么它们不是我的问题 - 可能是前者。
上面的类与我的数据库模式匹配,除了 SubCategories 表有一列 CategoryId 并且它是父表 Id 列的 FK。
如果您的表名为“类别”,但您的 FK 名为“CategoryId”,那么您就会遇到问题。复数不一致。
要么将 FK 重命名为 CategoryId,要么最好遵循更常见的单数类名约定(只有集合的实例是复数),并将表和类名更改为 Category。