无效的列名*Id



我知道问题:我缺少一个映射来帮助EF理解我的两个表之间的关系,但我没有看到我的错误在哪里。

我有一个使用EF CF 7的Web Api。我可以查询fine并获取父表数据,但当我尝试包括相关的子数据时,我会得到无效的列错误。

我的两张桌子是这样的:

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; }
}

上面的类与我的数据库架构匹配EXCEPTSubCategories表有一个列CategoryId,它是父表Id列的FK。

我的存储库查询如下:

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

现在这个错误让我不知所措……我隐约记得这与EF连接名称有关。在那个经验中,有一个基类定义了Id,因此当我在类中定义它时,它发生了冲突,但这里不是这样吗?

列名"CategoriesId"无效。

所以我在谷歌上搜索并阅读了几篇文章,但要么我没有完全理解,要么它们不是我的问题——可能是前者。

除了SubCategories表之外,上面的类与我的数据库模式匹配具有列CategoryId,并且它是父表Id列的FK。

如果表名为Categories,但FK名为CategoryId,则会出现问题。不一致的复数形式。

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

最新更新