现在我进入我的程序并且它实际上没有更新...我不能在列中放置null。如何正确更新edmx?谢谢。
答案 0 :(得分:81)
从EDMX更新/删除并不总是有效。如果在单击“从数据库更新模型”时未更新模型,请说明在更新数据库中的视图/表时,请执行以下操作:
1)从模型图中删除视图/表格
2)将EDMX切换到xml视图(右键单击edmx文件并选择“打开方式”)
3)搜索并删除xml实体元素
4)切换回EDMX视图
5)单击“从数据库更新模型”
这应该反映您对DB到EDMX所做的任何更改。这很麻烦,但完美无瑕。
在理想的世界中,我希望数据库中的更新模型能够同步从DB到EDMX的更改。但是,它大部分时间都不起作用。
答案 1 :(得分:19)
我成功完成的是(VB.Net)。
答案 2 :(得分:14)
从数据库中选择更新模型是更新EDMX的最佳方法。某些属性未在Conceptual图层上更新。
通过在“模型查看器”工具箱中查看,确保已更新“商店”图层。如果商店已正确更新,那么您没问题,您的数据库也是同步的。如果是这样,请进入可视化设计器,单击该字段,转到属性,然后在Conceptual端更新NotNull属性。
答案 3 :(得分:5)
是的,它在大多数情况下都不起作用: - /
“最佳方法”(因为它系统地工作)是删除EDMX文件并再次生成它。 但是不要忘记删除App.config中的连接字符串(否则VS2008 wizzard会为默认实体名称添加后缀),并清除缓存。
我希望这些工具能够在下一个版本中更好地工作,因为它会显着降低生产力......
答案 4 :(得分:4)
这是最快捷的方式:
答案 5 :(得分:4)
答案 6 :(得分:2)
在VS的XML编辑器中打开edmx文件,检查在尝试更新时是否出现错误。
<!--Errors Found During Generation:
warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key
defined and no valid primary key could be inferred. This table/view has
been excluded. To use the entity you will need to review your schema,
add the correct keys and uncomment it.
<EntityType Name="snafu">
<Property Name="snafu_column" Type="smallint" />
</EntityType>-->
在上述情况中......向相关表中添加主键导致“从数据库更新模型”起作用。
答案 7 :(得分:2)
这个答案更好:https://stackoverflow.com/a/23886016/1014884
任何手动编辑都是成熟的错误,或者当有人使用任何工具(例如向导)时会丢失。使用向导删除和更新要好得多。
答案 8 :(得分:1)
它不会更新字符串属性的最大长度!
如果您使用TFS,删除文件并不好,您希望保留历史记录而不影响其他人。
对我而言,它有一个可以用来完全重新创建edmx文件的tiniy单独项目,我用xml打开它,将粘贴复制到现有文件,然后在模型中移动一个形状以便VS重新创建.cs文件。瞧,它现在更新了。
答案 9 :(得分:1)
我在数据库中创建的视图未出现在设计器中(选择“从数据库中更新模型...”并在视图名称旁边添加一个复选框)。在将EDMX切换到xml视图之前,没有看到错误消息:
在edmx xml中,我发现:
“在生成期间发现错误:警告6013:表/视图'(视图 名称)没有定义主键,并且没有有效的主键 可以推断。该表/视图已被排除。要使用 实体,您将需要查看自己的架构,添加正确的密钥,并且 取消注释。”
我将视图修改为具有主键。然后,我打开edmx设计器并运行“从数据库更新模型...”,然后视图按预期方式出现在设计器中,没有任何错误。
答案 10 :(得分:0)
从设计器视图中删除所有表,并在此之后进行更新