我有一个使用实体框架4的现有MVC 3应用程序。该模型是使用数据库优先模式生成的。我还有“自动代码生成”来生成类。
今天,我对我的数据库做了一个简单的修改。字段从“int”变为“float”。我去了.edmx,右键单击,从数据库更新模型......
但是当我看到这个领域时,它根本没有改变。我仔细检查了一切,数据库被修改了,但模型永远不会改变......这是否意味着我需要手工完成?
我记得我之前做了几次更新(比如2个月前),它似乎在当时工作......我需要检查什么可以打破?
修改 的
在subversion中查看edmx diff文件时,似乎已完成更改,但在“图形模式”下查看时,更改不存在。此外,不会更新生成的代码。
- <Property Name="PreparationTime" Type="int" Nullable="false" />
+ <Property Name="PreparationTime" Type="float" Nullable="false" />
答案 0 :(得分:6)
这是正常行为。 ; - )
如果您只修改数据库端,即使执行“从数据库更新模型”向导,您的概念模型也不会更改。 请查看此SO answer,其中我将解释如何构建EDMX以及它应如何发展。
答案 1 :(得分:2)
检查清单
Output
窗口,查看命令Update model from database
答案 2 :(得分:1)
从MSDN尝试此黑客
1。更新EDMX文件后构建项目。
2。在解决方案资源管理器中右键单击您的.tt文件。
3。选择“运行自定义工具”选项。
答案 3 :(得分:0)
我知道这是一个老问题,但由于给定的答案在我的案例中不起作用,我认为我只是将解决方案留给其他有类似问题的人。
假设您正在使用SQL Server Management Studio:
对我来说,这是解决方案,经过几个月我一直在为edmx至关重要的项目使用解决办法,但拒绝以正常方式更新。一位新同事提到这是可能的解决办法。如果我早些时候知道这个,我本可以节省的时间......
答案 4 :(得分:0)
以上所有答案都无法解决我的问题。 这是解决我问题的原因:
检查警告部分,您要在模型中更新/添加的表没有必要的元素(例如缺少主键)。更新数据库表以修复警告,然后更新模型。