实体框架5 - 无效的列名称 - 反向工程师代码优先

Jas*_*ing 3 entity-framework visual-studio-2010 ef-code-first entity-framework-5

使用Entity Framework 5,Visual Studio 2010Entity Framework Power Tools(Beta 2)扩展.

这是我的数据库表结构:

数据库表结构

我使用了上述扩展的逆向工程师代码优先功能,它生成了POCO类和一些"映射"文件(不确定这是否是正式用法)和单个DbContext派生类.除了我接下来描述的更改之外,所有这些生成的类都是由电动工具生成的.

在Category.cs文件中,我添加了以下代码以帮助展平对象图:

private ICollection<Product> m_Products = null;
public ICollection<Product> Products
{
    get
    {
        if (m_Products == null)
        {
            m_Products = new List<Product>();
            foreach (var categoryProduct in CategoryProducts)
            {
                m_Products.Add(categoryProduct.Product);
            }
        }
        return m_Products;
    }
    set { m_Products = value; }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常,我知道必须与映射有关,但我不能完全弄清楚这一点.

Unhandled Exception: System.Data.EntityCommandExecutionException: An error occurred while 
executing the command definition. See the inner exception for details.
 ---> System.Data.SqlClient.SqlException: 
      Invalid column name 'Category_CategoryId'.
Run Code Online (Sandbox Code Playgroud)

如果我需要发布更多信息,例如映射的细节,请告诉我,我会这样做.我希望尽可能地缩短它,但我意识到我省略了一些东西,对于那些不熟悉该工具生成的代码的人来说,可能会留下想要更多细节的东西.

Nic*_*ler 6

您已经为模型添加了导航属性,因此EF正在尝试将其映射到您的数据库."Code First"表示您的代码模型定义了您的数据库模式.

尝试将[NotMapped]属性添加到助手属性,以告知EF忽略它们.