更新entity framework模型

我刚开始使用EF并发现它很酷,但我遇到了一个问题,

问题:
我更改了表User中的列的数据库模式,之前是Varbinary(50)然后我将其更改为VarChar(50),然后在MyModel.edmx设计器中我选择了“从数据库更新模型”,点击完成后我收到了这个错误。

错误:

    2019年错误:指定的成员映射无效。  'LearnDBModel.User'类型中成员'Email'的类型'Edm.Binary [Nullable = False,DefaultValue =,MaxLength = 100,FixedLength = False]'与SqlServer.varchar不兼容[Nullable = False,DefaultValue =, MaxLength = 50,Unicode = False,FixedLength = False]'成员'Email',类型为'LearnDBModel.Store.User'。 

让我知道如何解决它

我之前遇到过类似的问题,并发现解决它的方法是从模型中删除表。 保存并关闭模型。 然后重新打开模型并重新添加表格。

Shawn de Wet的解决方案工作正常但是如果您不想删除表(例如与其他表的关系……),您可以使用另一种解决方案:使用xml编辑器打开您的edmx文件,按Ctrl + F查找类似于

Property Name =“Email”Type =“Binary”Nullable =“false”MaxLength =“50”FixedLength =“false”

将其更新为:

Property Name =“Email”Type =“String”Nullable =“false”MaxLength =“50”Unicode =“false”FixedLength =“false”

保存并重建。

EF模型中的很多文件都是f ***** d。 删除和添加实体是不够的。 这些实体是重复的,如table,table1,table_result,table1_result,table_result1等等……模型更新正在更新重复的引用而不是原始引用。

我必须打开记事本并手动修复这些文件:

EFModel.Context.cs EFModel.edxm 

并删除这些文件:

 obj\Debug\edmxResourcesToEmbed\MYEfModel.csdl obj\Debug\edmxResourcesToEmbed\MYEfModel.msl obj\Debug\edmxResourcesToEmbed\MYEfModel.ssdl 

无需担心。 在模型中选择受影响的表。 如果你观察到,你会发现一个带有整数的新列名称后修复(这种行为只是因为该列数据类型的变化)。

例如,如果列名称为“Samplecolumn”,则在从数据库更新模型后,您将获得包含Samplecolumn1的新列。 您现在只需删除旧列“Samplecolumn”,并使用常规类别下的属性窗口将新列“Samplecolumn1”重命名为“Samplecolumn”。

只需构建您的应用程序 错误将消失。

转到MyModel.edmx xml文件,将Binary更改为String解决了我的问题

右键单击Model.edmx [Diagram]上的已更改表中的属性和“从数据库更新模型”。 保存并运行