Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 实体框架5-列名无效-首先是反向工程代码_Visual Studio 2010_Entity Framework_Ef Code First_Entity Framework 5 - Fatal编程技术网

Visual studio 2010 实体框架5-列名无效-首先是反向工程代码

Visual studio 2010 实体框架5-列名无效-首先是反向工程代码,visual-studio-2010,entity-framework,ef-code-first,entity-framework-5,Visual Studio 2010,Entity Framework,Ef Code First,Entity Framework 5,使用实体框架5,Visual Studio 2010和实体框架电动工具(Beta 2)扩展 以下是我的数据库表结构: 我首先使用了上述扩展的反向工程代码函数,它生成了POCO类和一些“映射”文件(不确定这是否是正式说法)以及一个DbContext派生的类。除了我接下来描述的更改之外,所有这些生成的类都是由powertool生成的 在Category.cs文件中,我添加了以下代码,以帮助稍微展平对象图: private ICollection<Product> m_Products

使用实体框架5Visual Studio 2010实体框架电动工具(Beta 2)扩展

以下是我的数据库表结构:

我首先使用了上述扩展的反向工程代码函数,它生成了POCO类和一些“映射”文件(不确定这是否是正式说法)以及一个DbContext派生的类。除了我接下来描述的更改之外,所有这些生成的类都是由powertool生成的

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

如果我需要发布更多信息,比如映射的细节,请告诉我,我会这样做的。我想尽量简短,但我意识到我忽略了一些东西,对于那些不熟悉该工具生成的代码的人来说,这些东西可能会让人想了解更多细节。

您已经在模型中添加了导航属性,因此EF正在尝试将其映射到您的数据库。“代码优先”意味着您的代码模型定义了您的数据库模式


尝试将
[NotMapped]
属性添加到助手属性中,告诉EF忽略它们。

如果您已经自动创建了DB scheme,并且没有使用类似(DropDatabaseAlways/DropDatabaseIfModelChanges)的策略,换句话说:您确实处于反向工程中,似乎必须手动添加列“类别”表上的“类别ID”

如果您不想使用该属性(我的意思是在DB中),可以使用数据注释
[NotMapped]
或Fluent API
modelBuilder.Entity().Ignore(x=>x.CategoryId)


最后,问题可能出在映射中。我不知道您使用的是数据注释还是Fluent API,但EF可能会自动查找某个db列(从模型派生的逻辑行为)并且找不到。在这种情况下,我建议您修改映射。

OP已经解决了他们的问题,但我在另一个解决方案中遇到了类似的错误。因此,这里是为了防止其他人需要它:

我在实体之间0..1关系的一侧缺少导航属性。一旦我向缺少导航属性的实体添加了适当的导航属性,问题就解决了


更详细一点:我有两个实体使用FK具有0..1关系。实体A(父实体)有一个FK到实体B(子实体)。子实体B对实体a有导航属性,但a对B没有导航属性。添加此属性后,问题得到解决。

哪里,你去哪里了。谢谢,我很感激。这为我提供了一个很好的起点,可以从中进一步研究这会给我带来问题的原因。谢谢!谢谢你的回复ng,我很感激!如果我错了,请纠正我,但定义关系时不需要在两侧都使用导航属性…导航属性必须至少在一侧。因此,我认为,一定有解决方案不需要在两侧都添加导航属性(或使EF忽略/不映射此导航)
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'.