列名称无效* Id

时间:2016-04-12 20:42:46

标签: 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; }
}

以上类匹配我的db模式 EXCEPT SubCategories表有一个CategoryId列,它是父表Id列的FK。

我的存储库查询如下所示:

return _context.Categories.Include(i => i.SubCategories).ToList();

现在错误让我失望......我依稀记得它与EF联系这个名字有关。在那次经历中,有一个基类具有Id定义,因此当我在我的课程中定义它时它会发生冲突,但这不是这里的情况吗?

  

列名称无效&#39; CategoriesId&#39;。

所以我有谷歌并花了一天时间在几篇文章上,但要么我完全不理解,要么他们不是我的问题......可能是前者。

1 个答案:

答案 0 :(得分:3)

  

上述类与我的数据库架构匹配,但不包括SubCategories表   有一个CategoryId列,它是父表Id列的FK。

如果您的表名为Categories,但您的FK名为CategoryId,那么您将遇到问题。不一致的多元化。

将FK重命名为CategoriesId,或者更好地遵循更常见的单数类名称约定(只有集合的实例为复数)并将表和类名称更改为Category。