数据库第一实体框架更新模型不起作用:可能是什么原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库第一实体框架更新模型不起作用:可能是什么原因?相关的知识,希望对你有一定的参考价值。

我有一个使用实体框架4的现有MVC 3应用程序。该模型是使用数据库优先模式生成的。我还有“自动代码生成”来生成类。

今天,我对我的数据库做了一个简单的修改。字段从“int”变为“float”。我去了.edmx,右键单击,从数据库更新模型...

但是当我看到这个领域时,它根本没有变化。我仔细检查了一切,数据库被修改了,但模型永远不会改变......这是否意味着我需要手工完成?

我记得我之前做了几次更新(比如2个月前),它似乎在当时工作......有什么可以打破,我需要检查?

编辑

在subversion中查看edmx diff文件时,似乎已完成更改,但在“图形模式”下查看时,更改不存在。此外,不会更新生成的代码。

-          <Property Name="PreparationTime" Type="int" Nullable="false" />
+          <Property Name="PreparationTime" Type="float" Nullable="false" />
答案

这是正常的行为。 ;-)

如果您只修改DB端的某些内容,即使执行“从数据库更新模型”向导,您的概念模型也不会更改。请看看这个SO answer,在那里我解释了如何构建EDMX以及它应该如何发展。

另一答案

检查清单

  • 检查Output窗口,查看命令Update model from database期间发生的任何错误
  • 从.edmx属性窗口检查数据库连接字符串
  • 导致它的任何自定义代码生成模板?
  • 备份.edmx的副本,然后尝试从.edmx中删除修改后的实体并重新添加
另一答案

试试这个来自MSDN的黑客攻击

1.更新EDMX文件后建立项目。

2.在解决方案资源管理器中右键单击您的.tt文件。

3.选择“运行自定义工具”选项。

另一答案

我知道这是一个老问题,但由于给定的答案在我的案例中不起作用,我认为我只是将解决方案留给其他有类似问题的人。

假设您正在使用SQL Server Management Studio:

  • 右键单击“Database Diagrams”并选择“New Database Diagram”。
  • 包括所有表格(“__ MigigrationHistory”除外,如果有的话),然后按“添加”。
  • 尝试再次更新您的EDMX。

对我来说,这就是解决方案,经过几个月我一直在为edmx至关重要的项目使用解决办法,但拒绝以正常方式更新。一位新同事提到这是可能的解决办法。如果我早些时候知道这个,我本可以节省的时间......

以上是关于数据库第一实体框架更新模型不起作用:可能是什么原因?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架:部分更新记录不起作用

C# - 实体框架代码优先,延迟加载不起作用

实体框架脚手架和迁移不起作用

实体框架 4 函数导入不起作用

实体框架:开发不执行更新和删除的模型

OptimisticConcurrencyException 在某些情况下在实体框架中不起作用