Ado Entity:将Tiny视为布尔值= false

时间:2014-05-19 07:25:00

标签: mysql boolean entity ado tinyint

我需要将.net应用程序连接到mysql数据库。当我将表添加到模型时,所有具有Tinyint类型的列都被映射为boolean。

在mysql论坛中搜索后,我在连接字符串中添加“Treat Tiny As Boolean = false”。刷新模型时,没有任何变化。如果我手动将类型更改为Sbyte或Int 16,则会出现以下错误。

Error   43  Error 2019: Member Mapping specified is not valid. The type 'Edm.SByte[Nullable=True,DefaultValue=]' of member 'personacion' in type 'Model.perfiles' is not compatible with 'MySql.usmallint[Nullable=True,DefaultValue=]' of member 'personacion' in type 'Model.Store.perfiles'. C:\Proyectos\StatusXMLGenerator\StatusXMLGenerator\StatusXMLGenerator\Model.edmx    474 17  StatusXMLGenerator
Error   42  Error 2019: Member Mapping specified is not valid. The type 'Edm.Int16[Nullable=False,DefaultValue=]' of member 'id_seccion' in type 'Model.formularios' is not compatible with 'MySql.bool[Nullable=False,DefaultValue=]' of member 'id_seccion' in type 'Model.Store.formularios'.    C:\Proyectos\StatusXMLGenerator\StatusXMLGenerator\StatusXMLGenerator\Model.edmx    454 17  StatusXMLGenerator

错误42也有不正确的映射。它说列的类型是Mysql.Bool,但在数据库中,我存储了1到10的值,所以它应该是Mysql.usmallint,就像错误43一样。

这是我的连接字符串:

<add name="ModelContainer" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=**********;user id=*******;password=*****;database=pki_2010;persistsecurityinfo=True;Treat Tiny As Boolean=false;&quot;" providerName="System.Data.EntityClient" />

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决。

如果我的情况有任何人,这就是解决方案。

1º在连接字符串中添加“Treat Tiny As Boolean = false”。

2º构建以刷新连接字符串的新值

3º将模型打开为XML并将列的值设置为“tinyint”(模式应该类似于:

<edmx><schema><entitycontainer><entitytype><property name="..." type="tinyint">...

4º使用设计器打开模型并将列映射到Sbyte

5º再次保存并构建。