MappingException Edm.String与SqlServer.varbinary不兼容

Sch*_*mus 7 c# mapping edmx sql-server-2008

我很难解决一个愚蠢的映射问题.基本上发生的事情是我在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'.
Run Code Online (Sandbox Code Playgroud)

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

Sch*_*mus 19

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


Ωme*_*Man 5

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


替代修复;同样可行

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

但问题可能适当地通过在EDMX如设置正确的值解析- >

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

在此处输入图片说明

上面的示例显示,DateTime但在您的情况下,它会显示String,这是错误报告的。