9

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

4 回答 4

23

好的,对于那些曾经遇到过这样的问题的人,事实证明,最好通过在 edmx 中删除并重新添加实体来解决它。在我看来,这是一件愚蠢的事情,但它确实有效。呸。

于 2013-02-05T18:35:18.167 回答
5

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


备用修复;一样可行

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

但是问题也可以通过在 edmx 中设置正确的值来正确解决,例如 ->

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

在此处输入图像描述

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

于 2016-02-12T14:50:05.970 回答
4

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

于 2016-02-11T09:39:04.823 回答
1

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

在编码期间,您将此实体定义为Property Int Price {get:set:},现在这是问题所在。您在 SQL TABLE 和代码上的数据类型必须相同,否则会发生此问题。我遇到了同样的问题,我修复了它,希望你能明白

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

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

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

希望这会帮助一些人

于 2014-05-14T17:01:08.220 回答