更新edmx以反映数据库中所做的更改(.net linq到实体) 所以我做了我的edmx 然后我稍微更改了一下数据库,将列从NOTNULL更改为允许NULL 我进入我的edmx,右键单击并选择“从数据库更新模型”
现在我进入我的程序,它实际上还没有更新。。。我不能在列中输入空值。我必须做什么才能正确更新edmx?谢谢。从数据库中选择更新模型是更新EDMX的最佳方法。某些特性不会在概念图层上更新更新edmx以反映数据库中所做的更改(.net linq到实体) 所以我做了我的edmx 然后我稍微更改了一下数据库,将列从NOTNULL更改为允许NULL 我进入我的edmx,右键单击并选择“从数据库更新模型”,linq,entity-framework,.net-3.5,linq-to-entities,Linq,Entity Framework,.net 3.5,Linq To Entities,现在我进入我的程序,它实际上还没有更新。。。我不能在列中输入空值。我必须做什么才能正确更新edmx?谢谢。从数据库中选择更新模型是更新EDMX的最佳方法。某些特性不会在概念图层上更新 通过在模型查看器工具箱中查看存储层,确保存储层已更新。如果存储已正确更新,那么您就没事了,并且您的数据库处于同步状态。如果是这样,请进入可视化设计器,单击该字段,转到属性,并更新概念侧的NotNull属性。从EDMX更新/删除并不总是有效的。如果在单击“从数据库更新模型”时模型没有得到更新,比如在数据库中更新视图/
通过在模型查看器工具箱中查看存储层,确保存储层已更新。如果存储已正确更新,那么您就没事了,并且您的数据库处于同步状态。如果是这样,请进入可视化设计器,单击该字段,转到属性,并更新概念侧的NotNull属性。从EDMX更新/删除并不总是有效的。如果在单击“从数据库更新模型”时模型没有得到更新,比如在数据库中更新视图/表时,请执行以下操作: 1) 从模型图中删除视图/表格
2) 将EDMX切换到xml视图(右键单击EDMX文件并选择“打开”)
3) 搜索并删除xml实体元素
4) 切换回EDMX视图
5) 单击“从数据库更新模型” 这应反映您对EDMX数据库所做的任何更改。它很笨重,但工作完美无瑕
在理想情况下,我希望数据库中的更新模型能够将从DB到EDMX的更改同步。但是,它大部分时间都不起作用。是的,它大部分时间都不起作用:-/ “最佳方法”(因为它可以系统地工作)是删除EDMX文件并再次生成它。 但别忘了删除App.config中的连接字符串(否则VS2008 wizzard将在默认实体名称中添加后缀),并清除缓存
我希望这些工具在下一个版本中能够更好地工作,因为它会显著降低生产率…在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>-->
在上述情况下…向相关表中添加主键导致“从数据库更新模型”正常工作。例如,它不会更新字符串属性的最大长度 如果使用TFS,则删除该文件是不好的,您希望保留历史记录而不影响其他人
对我来说,它的工作原理是有一个微小的独立项目,我可以使用它来完全重新创建edmx文件,我用xml打开它,复制粘贴到现有的文件,然后在模型中移动一个形状,以便VS重新创建.cs文件。瞧,它现在已经更新了。我成功地做到了这一点(VB.Net)
这是最快最简单的方法:
任何手动编辑都可能出现错误,或者在使用向导之类的工具时会丢失。使用向导进行删除和更新要好得多 1.更新EDMX文件后生成项目 2.右键单击解决方案资源管理器中的.tt文件 3.选择“运行自定义工具”选项 这将更新.tt文件
资料来源: 从designer视图中删除所有表,然后进行更新我在数据库中创建的视图没有出现在设计器中(在选择“从数据库更新模型…”并在视图名称旁边添加复选框后)。在将EDMX切换到xml视图之前,我没有看到任何错误消息:
- 在edmx文件上单击鼠标右键
- 选择“用…打开”
- 选择“自动编辑器选择器(XML)”
- 单击“查找”并搜索视图名称
我修改了视图,使其具有主键。然后,我打开edmx设计器并运行“从数据库更新模型…”,然后视图按预期出现在设计器中,没有出现错误。遗憾的是,在VS 2010 RC2中,它仍然可以正常工作。我同意——这会适得其反,而且容易出错。删除EDMX文件是唯一经过100%验证的工作方式。Huagati有一个工具可以刷新EDMX文件,但它不是免费的。我对列大小进行了更新,但在数据模型中没有刷新,因此这是不可靠的。最好的选择是重新添加实体或手动更改属性(如我的情况)。谢谢你的回答。是的,你可以这样做,但是你没有从数据库获得所有更新,这一点也不奇怪吗?我不想在数据库中每次更改模式时都添加删除实体…对我来说,这是非常低效的…“3)搜索并删除xml实体元素”有人能详细说明一下这一步需要做什么吗?当您需要在属性或StoreGeneratedPattern上指定枚举类型之类的内容时,删除实体以重新添加它们是不可接受的,因为这会导致