恭喜您获得阿里云幸运券 建站,有个好记的域名非常重要!
  • By xoyozo 转载请注明出处
  • Posted 2019/12/4 21:25:04

设置 TreatTinyAsBoolean 为 false 使 EF 映射 tinyint(1) 为 SByte 而非 bool

首先,在数据库连接字符串中添加:

TreatTinyAsBoolean=false


第二步,在项目中搜索该字段名,在搜索结果中找到 .edmx 文件中的两处。

.edmx 文件中的注释已经表明其包含 SSDL、CSDL、C-S mapping 三块内容,


在 SSDL content 下方找到该字段:

<Property Name="字段名" Type="bool" Nullable="***" />

改为

<Property Name="字段名" Type="tinyint" Nullable="***" />


在 CSDL content 下方找到该属性:

<Property Name="属性名" Type="Boolean" Nullable="***" />

改为

<Property Name="属性名" Type="SByte" Nullable="***" />


第三步,在解决方案管理器中展开 .edmx ->库名.tt -> 表名.cs 文件,

将模型类中的属性

public bool invisible { get; set; }

改为

public sbyte invisible { get; set; }

或 bool? 改为 sbyte?


完成。


相关报错:

错误: 指定的成员映射无效。类型中的成员的类型“Edm.SByte[Nullable=False,DefaultValue=]”与类型中的成员的“MySql.bool[Nullable=False,DefaultValue=]”不兼容。


参考:

https://mysqlconnector.net/connection-options/

https://stackoverflow.com/questions/6656511/treat-tiny-as-boolean-and-entity-framework-4

谢谢赞赏

相关文章

大家正在看

最新发布