如果从数据库构建edmx文件,然后数据库更改,那么如何获取模型来进行更改?
您删除整个模型并重新生成,还是可以检测到更改?
我看到一则帖子提到“更新您的模型” rt。在edmx文件上使用鼠标命令,但是我看不到它。
更新edmx以反映数据库中所做的更改(.net linq-to-entities)
我才刚开始。
如果从数据库构建edmx文件,然后数据库更改,那么如何获取模型来进行更改?
您删除整个模型并重新生成,还是可以检测到更改?
我看到一则帖子提到“更新您的模型” rt。在edmx文件上使用鼠标命令,但是我看不到它。
更新edmx以反映数据库中所做的更改(.net linq-to-entities)
我才刚开始。
Answers:
您是在查看设计器视图还是代码视图?您可以通过右键单击EDMX文件,然后选择Open With -> ADO.NET Entity Data Model Designer
右键单击EDMX设计器的设计器表面,然后单击 Update Model From Database...
默认情况下,所有实体都会刷新,只有在选择新实体后才添加它们。
编辑:如果它不是很好刷新。
我发现设计器“从数据库更新”只能处理小的更改。如果您删除了表,更改了外键或使用了函数映射更改了(gasp)存储过程的签名,最终将陷入混乱状态,您将必须删除所有实体并“从数据库添加”或者只是删除edmx资源并重新开始。
这可能对您有所帮助。(我已将其应用到我的项目中)
这是3个简单的步骤。
而已。它将根据数据库上的更改同步/刷新模型。
有关详细说明。请访问下面的链接。
带有ASP.NET MVC的EF数据库优先:更改数据库并更新其模型。
无法自动更新CodeFirst Model。我也不推荐。因为代码首先带来的好处之一是您可以使用POCO类。如果更改了此POCO类,则您不希望某些自动生成的代码破坏您的工作。
但是您可以创建一些模板解决方案,将更新/添加的实体添加到新模型中。然后收集新的CS文件并将其移动到您的工作项目中。这样,如果它是一个新实体,您就不会有冲突,您只需将相关的cs文件添加到现有项目中即可。如果是更新,则只需从文件中添加一个新属性。如果仅将几个列添加到一个或两个表中,则可以将它们手动添加到POCO类中,而无需进行任何额外的工作,这就是使用Code-First和POCO类的好处。
不过,您需要注意,您需要完全按照删除前的样子设置EDMX文件(如果您选择删除/重新生成路由),否则,代码和EF生成的模型之间的命名不匹配(特别是用于复数和单数)
希望这可以防止您头疼=)
我一直在研究一个不太大的项目,该项目合并了Entity Framework,大约十二个表以及大约15个存储的proc和函数。经过数周的开发,就成功更新模型而言,尝试刷新我的表和存储的过程产生了混合的结果。有时更改是有效的,但大多数时候却没有效果。有时可以进行简单的列更改(更改顺序,添加,删除或重命名),大多数情况下无效。Visual Studio似乎在刷新方面有更多问题,而不仅仅是添加新问题。它还会出现更多问题,无法反映存储的proc更改,尤其是在添加或删除或重命名列时。我没有检测到任何一致的行为,所以我不能说“这种类型的更改将始终被更新,而这种类型的更改将不会”。
最终结果是,如果您想要100%有效的解决方案,请从项目中删除EDMX文件,将“添加新”项添加到项目中(ADO.NET实体数据模型),并确保对模型名称使用相同的名称。每次都有效。