在Visual Studio 2010 EF 4中,我可以向数据库表中添加一个新列,然后单击我的.edmx上的“从数据库更新模型”,这一切在世界上都很好。
在Visual Studio 2012 EF 5中,我更改了一个表,然后单击“从数据库更新模型”,它不再接收对各个表的更改。
我错过了什么......或者这是VS2012的新功能吗?
更新 我可以在.EDMX文件中获取带有添加列的表的唯一方法是删除表,然后“从数据库更新模型”,它将获取添加的列。但是,它将添加的表格远离左侧,我必须将其移回原位。没有 biggie 只是一个烦恼。
答案 0 :(得分:8)
是的,这仍然适用于VS2012。您使用默认代码生成还是有TT文件?它可能会被添加到EDMX中,但您的类文件没有更新。
在解决方案资源管理器中右键单击EDMX文件或相关的TT文件,然后选择“运行自定义工具”以确保它正在重新生成。
答案 1 :(得分:2)
拥有EF模型与数据库中的下划线之间存在差异。当您“从数据库更新模型”时,如果实体/表已导入到您的数据模型中,那么您将刷新该实体。此过程不会自动将数据库模式映射到现有数据模型,但您可以在EF模型中向实体添加属性,然后将属性映射到数据库列(这正是EF在您执行时自动为您执行的操作正常删除和更新。
首先删除实体,然后更新EF知道之前没有导入表/实体,因此将自动映射所有数据库列。
总之,您不必删除实体,但对于简单实体来说可能更容易。
答案 2 :(得分:0)
我遇到了类似/相同的问题,我从模型中删除了表格,然后选择了“从数据库更新模型”。这再次无效,我无法访问我添加到表中的新列。
但是,一旦我从源代码控制(Vault Professional)手动检出模型的设计器文件,然后从模型中删除了表并再次从数据库更新了模型,它就可以工作了。因此,VS可能不知道在这个特定实例中检查模型的设计器文件。
答案 3 :(得分:0)
它发生了,因为你删除了你的一个实体,现在想再次从数据库更新它。该模型正在缓存这个因素,这就是为什么你没有得到更新表的选择。所以你必须右键单击模型页面和选择模型浏览器选项。您将在右侧找到模型浏览器。删除您要从实体类型文件夹更新的实体。现在做任何你想做的事情。