MappingException Edm.String与SqlServer.varbinary不兼容

时间:2013-02-04 23:06:16

标签: c# sql-server-2008 mapping edmx

我很难解决愚蠢的映射问题。基本上发生的事情是我在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'.

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

4 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

EF(或某个用户​​的更改)已将该属性的edmx Model Entity更改为({1}}而不是{{} 1}}。 错误首先读取本地实体,然后是数据库定义

替代修复;尽可能

是的,您的修复确实解决了问题......

但是,通过在edmx中设置正确的值,例如 - >,问题可能

  1. Edm.String[Nullable=True,DefaultValue=,MaxLength=256,Unicode=,FixedLength=False]窗口,然后打开树。
  2. 选择varbinary - > Model Browser然后找到目标实体,然后将其打开然后选择Model
  3. 并将Entity Types更改为适当的值。
  4. enter image description here

    上面的示例显示Properties,但在您的情况下,它会显示Type,错误地报告错误。

答案 3 :(得分:1)

让我解释一下这个问题,例如您在数据库中有一个名为价格的实体,并且您将其类型设为字符串,并且

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

如果使用EF

还会通过搜索在EDMX Xml文件中更改这些类型

<Property Name="Price" Type="money" />

<Property Type="Decimal" Name="Price" Precision="19" Scale="4" />

希望这会对某人有所帮助