MappingException Edm.String与SqlServer.varbinary不兼容

我很难解决一个愚蠢的映射问题。 基本上发生了什么是我在sql db表中有一个字段,它是一个varbinary用于安全性(加密和解密)。 所有这些东西都很好,但看起来似乎edmx将该表中的字段视为一个字符串,我认为它应该看作是数据只是一个二进制字符串。 这是我收到的错误消息。

Schema specified is not valid. Errors: ReadModel.Model.msl(836,12): error 2019: Member Mapping specified is not valid. The type 'Edm.String [Nullable=True,DefaultValue=,MaxLength=256,Unicode=,FixedLength=False]' of member 'field-in-question' in type 'Lib.ReadModel.TableName' is not compatable with 'SqlServer.varbinary' [Nullable=True,DefaultValue=,MaxLength=256,FixedLength=False]' of member 'field-in-question' in type 'Model.Store.TableName'. 

有没有人有这样的问题? 也许我有一些东西可以忽略? 也许能够指出我正确的方向? 我在寻找解决问题的信息方面存在问题而且处于亏损状态。

好吧,对于那些曾经遇到类似问题的人来说,似乎最好通过在edmx中再次删除和重新添加实体来解决它。 在我看来,这是一件愚蠢的事,但它确实有效。 呸。

我有这个问题,我更改了数据库中的字段类型,然后我的c#项目开始抱怨。 首先,我从数据库更新了我的模型。 然后,我点击我的模型,我的实体类型,有问题的表和字段/属性。 然后我改变了它的类型以匹配表中新更改的类型。 然后错误就消失了。

EF(或用户在某一点上的更改)已经将该属性的edmx Model Entity更改为(?)为Edm.String[Nullable=True,DefaultValue=,MaxLength=256,Unicode=,FixedLength=False]而不是varinary该错误首先读取本地实体,然后是数据库定义

是的你的修复确实解决了问题…

但问题也可以通过在edmx中设置正确的值来解决 – >

  1. Model Browser窗口,然后打开树。
  2. 选择Model – > Entity Types然后找到目标实体,然后打开它,然后选择其Properties
  3. 并将Type更改为适当的值。

在此处输入图像描述

上面的示例显示了DateTime但在您的情况下,它将显示String ,该错误尽职尽责地报告。

让我解释一下这个问题,例如你在数据库中有一个表,它有一个名为Price的实体,你创建了它的类型字符串 ,和

在编码过程中,您将此实体定义为Property Int Price {get:set:} ,现在是问题所在。 你在SQL TABLE和Code上的数据类型必须是相同的,否则会出现这个问题..我面临同样的问题,我修复它再做,希望你能得到它

如果您使用EF,还可以通过搜索在EDMX Xml文件中更改这些类型

喜欢

   

希望这对一些人有所帮助