当前位置: 首页>>数据库>>正文


“从数据库更新模型”没有看到类型更改

丝路花雨 数据库 , 去评论

问题描述

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

我打开了我的EF模型,并做了一个“从数据库更新模型”,并期望看到这些列现在是Int64。但他们还是Int32。

(我跑了好几次,以确保。)

我检查了我的数据库,列是绝对的BigInts。

那么“从数据库更新模型”不会改变数据类型吗?需要手动应用吗?

最佳解决方案

不幸的是,您需要从模型中删除这些项目,然后将它们添加回来 – 至少这是我唯一能够工作的东西。

至少有一个third-party工具可以帮助这个,但是还没有亲自尝试过。

次佳解决方案

我使用的是VS2008 SP1。如果您更改edmx的”ModelView”(CSDL)中的数据类型,则会发生错误,因为”DatabaseModel”(SSDL)未更新。您必须手动编辑* .edmx(XML)。那听起来不是那么难。您可以简单地搜索VS提供的”Error List”的属性(文件中的serach可能是最好的解决方案)。转到出现错误数据类型的行,并修复它。

例如你将float更改为数据库上的nvarchar(50) – >转到你的模型,并将Double改为String – >验证 – >错误…. – >搜索属性并进行以下更改:

      <Property Name="YourChangedProperty" Type="float" />

      <Property Name="YourChangedProperty" Type="nvarchar" MaxLength="50" />

如果您确切知道数据库中已更改的内容,这个工作效果非常好。如果您进行了无数次更改,则必须使用一些DB-compare工具分析您的更改或重新生成整个模型。

不是很好但它是”works”。

照顾M

第三种解决方案

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

第四种方案

Answer

对于您提到的具体情况,您需要手动将Type从Int32更改为Int64。

有许多方法可以完成,但最简单的方法可能只是打开模型(使用默认编辑器),并将属性的类型从Int32更改为Int64。

说明(来自MSDN Library)

The ADO.NET Entity Data Model Designer (Entity Designer) uses the Update Model Wizard to update an .edmx file from changes made to the database. The Update Model Wizard overwrites the storage model as part of this process. The Update Model Wizard also makes some changes to the conceptual model and mappings, but it only makes these changes when objects are added to the database. For example, new entity types are added to the conceptual model when tables are added to the database, and new properties are added to entity types when columns are added to a table. For details about what changes are made to the .edmx file, see Changes Made to an .edmx File by the Update Model Wizard.

对于您的方案,重要的是要注意的是,更新模型向导将根据更改更新.edmx文件,但仅适用于存储模型。当对现有列的定义进行更改时,概念模型不会更新。有关更新模型向导所做更改的完整说明,请参阅上面的“更新模型向导对.edmx文件所做的更改”链接。

第五种方案

您需要删除您的EF模型,而不是再次创建,并将工作。

参考文献

注:本文内容整合自google/baidu/bing辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为@)。

本文由《共享笔记》整理, 博文地址: https://gxnotes.com/article/192143.html,未经允许,请勿转载。
Go