Entity framework VS 2012-EF 5.0-从数据库更新模型-不拾取表更改

Entity framework VS 2012-EF 5.0-从数据库更新模型-不拾取表更改,entity-framework,visual-studio-2012,Entity Framework,Visual Studio 2012,在VisualStudio2010EF4中,我可以向数据库表中添加一个新列,然后在my.edmx上单击“从数据库更新模型”,一切都很好 在Visual Studio 2012 EF 5中,我更改了一个表,然后单击“从数据库更新模型”,它不再拾取对单个表的更改 我是不是错过了什么。。。或者这是VS2012的新“功能” 更新 我能得到一个表的唯一方法是删除该表,然后“从数据库更新模型”,然后它将获取添加的列,以反映在.EDMX文件中。但是,它将添加的表放在远离左侧的地方,我必须将其移回原位。不,这只

在VisualStudio2010EF4中,我可以向数据库表中添加一个新列,然后在my.edmx上单击“从数据库更新模型”,一切都很好

在Visual Studio 2012 EF 5中,我更改了一个表,然后单击“从数据库更新模型”,它不再拾取对单个表的更改

我是不是错过了什么。。。或者这是VS2012的新“功能”

更新
我能得到一个表的唯一方法是删除该表,然后“从数据库更新模型”,然后它将获取添加的列,以反映在.EDMX文件中。但是,它将添加的表放在远离左侧的地方,我必须将其移回原位。不,这只不过是个麻烦。

是的,这在VS2012中仍然有效。您使用的是默认代码生成还是TT文件?可能是它正在添加到EDMX中,但没有更新您的类文件


尝试右键单击解决方案资源管理器中的EDMX文件或相关TT文件,然后选择“运行自定义工具”以确保正在重新生成该文件。

EF模型与数据库中的下划线方式不同。“从数据库更新模型”时,如果实体/表已导入到数据模型中,则将刷新实体。此过程不会自动将数据库架构映射到现有数据模型,但您可以将属性添加到EF模型中的实体,然后将属性映射到数据库列(这正是EF在正常删除和更新时自动为您执行的操作)

当您首先删除实体时,update EF知道该表/实体以前没有导入过,因此将自动为您映射所有数据库列


总而言之,您不必删除实体,但对简单实体来说,这样做更容易。

我也遇到了类似的问题,我从模型中删除了表,然后选择了“从数据库更新模型”。这同样不起作用,我无法访问添加到表中的新列


但是,一旦我从源代码管理(Vault Professional)手动签出了模型的设计器文件,然后从模型中删除了表并再次从数据库中更新了模型,就成功了。因此,VS可能不知道在这个特定实例中签出模型的设计器文件。

这是因为您删除了一个实体,现在又想从数据库中更新它。模型正在缓存此实体,这就是为什么您无法选择更新表的原因。因此,您必须右键单击模型页面并选择模型浏览器选项。您将在右侧找到模型浏览器。请从“图元类型”文件夹中删除您想要更新的图元。现在执行任何操作

这确实会重建类并获取对.edmx文件的更改。然而,如果我更改了一个表,它仍然不会接受这些更改。请参见此处:包含新列的表不会显示在“添加”选项卡下;它们将出现在“刷新”选项卡上。您的表格是否列在该选项卡的“刷新”下?在2010年和2012年期间,向现有表中添加一个新列一直对我有效。但是是的,把它放到一边是2012年的一个新功能:)这一直都很奇怪,即使是在2010年和2008年。某些类型的更改从未传播回模型。也许这就是其中的一个例子?我听说是的,但至少它在2010年更新了一个表,edmx会把它捡起来。这让我回到了LINQ时代,在那里你必须删除该项目,然后将其添加回。。。就像我说的,它并不总是这样。你经常需要手动更新对象,或者删除并重新添加。我知道,至少可以说这是一件令人烦恼的事情。我猜这是因为您可以在添加实体和刷新实体之间对其进行其他更改,但这不应该只是散列检查比较吗?我相信ADO.NET团队有他们的理由。