24

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

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

错误:

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

让我知道如何解决它

4

6 回答 6

61

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

于 2012-05-19T18:51:18.717 回答
15

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

属性名称="电子邮件" 类型="二进制" Nullable="false" MaxLength="50" FixedLength="false"

将其更新为:

属性名称="Email" Type="String" Nullable="false" MaxLength="50" Unicode="false" FixedLength="false"

保存并重建。

于 2014-12-10T03:27:15.053 回答
4

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
于 2015-11-15T09:15:40.603 回答
1

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

例如,如果您的列名为“Samplecolumn”,则在从数据库更新模型后,您将获得一个带有 Samplecolumn1 的新列。您现在可以使用常规类别下的属性窗口简单地删除旧列“Samplecolumn”并将新列“Samplecolumn1”重命名为“Samplecolumn”。

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

于 2012-05-19T19:20:10.457 回答
0

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

于 2016-07-01T16:04:03.700 回答
-2

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

于 2015-08-10T06:35:25.613 回答