net core ef for mysql bool 类型字段定义问题

RT,以前的ef for mysql ,定义c# bool, mysql tinyint(1),来存储bool 值,net core 里边会报错, Unable to cast object of type 'System.Boolean' to type 'System.SByte'.

如果用bit(1),好像值更新有问题, false 也会存成1, 这个问题有遇到的吗?


mysql
2023-11-13 14:35:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
满天星莹

 core 里边针对mysql ,bool类型我 定义了 bit(1),正常情况下 都是可以更新匹配的,0对应false,1对应 true, 但是如果 在dbcontext 中定义表的地方 增加 HasDefaultValueSql的话, 问题就来了。

entity.Property(e => e.IsAllProduct)
.HasColumnType("bit(1)")
.HasDefaultValueSql("'1'");

比如,表A中的这个字段,默认值是 1,也就是true,当使用 context.A.Add(modelA)的时候,IsAllProduct传的值是false,也就是0, 但是ef会强制取 default的值'1',从打印出来的sql可以看出来,dudu大神 你可以试一下,应该是个 bug吧。

 

 

两个sql分别是 加了 HasDefaultValueSql 和 没加 HasDefaultValueSql 生成的sql,加了个强制取default,没加的取实体给的值

分享
微博
QQ
微信
回复
2023-11-13 15:47:53
相关问题
asp.net core nginx + Kestrel 部署问题
779浏览 • 1回复 待解决
asp net core ubuntu 安装nginx
660浏览 • 2回复 待解决
Entity Framework Core jsonb 列类型
1066浏览 • 1回复 待解决
nginx如何部署多个asp.net core站点??
652浏览 • 1回复 待解决
WINDOWS下Nginx能挂.NET CORE WEB API程序吗?
782浏览 • 1回复 待解决
关于mysql存大文本字段问题
2496浏览 • 1回复 待解决
mysql 自增字段如何重设?
1149浏览 • 1回复 待解决
mysql group by 字段多,怎么优化?
1091浏览 • 1回复 待解决
mysql数据类型使用int类型和string类型
852浏览 • 1回复 待解决
mysql varchar类型的疑问
663浏览 • 1回复 待解决
PostgreSQL interval后跟字段问题
2466浏览 • 2回复 待解决