使用MySql.Data.EntityFrameworkCore包的TINYINT或BIT类型映射遇到麻烦

时间:2019-01-21 12:45:48

标签: c# mysql entity-framework asp.net-core

我使用数据库优先方法,并尝试基于现有数据库创建EF模型。
我试图从我的专栏代表布尔类型。

首先,我尝试将其设置为TINYINT(1)类型,然后生成EF模型,然后看到此列的byte类型。 我尝试了多种方法将其设置为0,但没有成功。 我尝试将简单的赋值=0分配给该变量,然后尝试使用Convert.ToByte(false)方法,但两个方法均未成功。

下一步是将TINYINT(1)更改为BIT(1)类型。然后,EF为我的栏生成了short类型。我也无法通过此short类型分配0值。

我怎么了?

2 个答案:

答案 0 :(得分:1)

听起来您正在遇到MySQL bug 92987。 (另请参见类似的bug 93028。)

由于Oracle甚至没有确认这些问题,更不用说指出修复这些问题的优先级了,您可能想要尝试切换到Pomelo.EntityFrameworkCore.MySql,这是MySQL EF.Core的替代实现;许多人报告说它更可靠(例如herehere)。

答案 1 :(得分:0)

因此,我在MySQL中将默认值更改为NULL,然后EF为我生成了可为空的short?类型。 奇怪的事情,但是这次映射正常。