"从数据库更新模型"看不到类型更改

Vac*_*ano 23 entity-framework entity-framework-4

我有几个列,我从Int更改为BigInt.

我打开了我的EF模型并做了一个'从数据库更新模型',并期望看到这些列现在是Int64s.但他们仍然是Int32s.

(为了确定,我跑了好几次.)

我仔细检查了我的数据库,列绝对是BigInts.

那么......"从数据库更新模型"不适用于更改数据类型吗?是否需要手动应用?

E.J*_*nan 44

不幸的是,你需要从你的模型中删除这些项目,然后重新添加它们 - 至少这是我设法完成工作的唯一方法.

至少有一个第三方工具可以帮助解决这个问题,但尚未亲自尝试过.

  • ......四年后,这仍然没有解决. (9认同)
  • 非常令人失望的是,像Entity Framework这样的高调工具无法正确完成这个简单的任务. (4认同)
  • 2017年仍未修复.+ 1 (2认同)

Mat*_*Mat 7

我正在使用VS2008 SP1.如果更改edmx的"ModelView"(CSDL)中的数据类型,则会发生错误,因为"DatabaseModel"(SSDL)未更新.您必须手动编辑*.edmx(XML).这并不像听起来那么难.您只需搜索VS提供的"错误列表"属性(在文件中搜索可能是最佳解决方案).转到出现错误数据类型的行并修复它.

例如,您在数据库中将float更改为nvarchar(50) - >转到您的模型并将Double更改为String - > validate - > Error .... - >搜索属性并进行以下更改:

      <Property Name="YourChangedProperty" Type="float" />
Run Code Online (Sandbox Code Playgroud)

      <Property Name="YourChangedProperty" Type="nvarchar" MaxLength="50" />
Run Code Online (Sandbox Code Playgroud)

如果您确切知道数据库中已更改的内容,则此方法非常有效.如果您进行了无数次更改,则必须使用某些DB比较工具分析更改或重新生成整个模型.

不是很好.但它"有效".

小心M.


Mic*_*uso 5

正确 - 数据类型似乎不会自动更新。您可以使用“属性”窗口简单地更改模型视图中的数据类型,并将类型更改为 Int64。