我知道问题...我错过了一个映射来帮助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; }
}
以上类匹配我的db模式 EXCEPT SubCategories表有一个CategoryId列,它是父表Id列的FK。
我的存储库查询如下所示:
return _context.Categories.Include(i => i.SubCategories).ToList();
现在错误让我失望......我依稀记得它与EF联系这个名字有关。在那次经历中,有一个基类具有Id定义,因此当我在我的课程中定义它时它会发生冲突,但这不是这里的情况吗?
列名称无效&#39; CategoriesId&#39;。
所以我有谷歌并花了一天时间在几篇文章上,但要么我完全不理解,要么他们不是我的问题......可能是前者。
答案 0 :(得分:3)
上述类与我的数据库架构匹配,但不包括SubCategories表 有一个CategoryId列,它是父表Id列的FK。
如果您的表名为Categories,但您的FK名为CategoryId,那么您将遇到问题。不一致的多元化。
将FK重命名为CategoriesId,或者更好地遵循更常见的单数类名称约定(只有集合的实例为复数)并将表和类名称更改为Category。