我正在将.net core 2.2与使用MySql.Data.EntityFramework.Core的实体框架一起使用。当我执行以下操作时,遇到此异常:
DbContext.MyDbSet.Add(new MyClass());
DbContext.SaveChanges();
例外:
System.InvalidCastException:无法转换类型的对象 System.Boolean键入System.Int16
我已将以下代码段添加到OnModelCreating函数中:
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
foreach (var property in entityType.GetProperties())
if (property.ClrType == typeof(bool) || property.ClrType == typeof(Boolean))
property.SetValueConverter(new BoolToZeroOneConverter<Int16>());
我想念什么?
答案 0 :(得分:0)
这是MySQL EF.Core实现中的错误:bug 93028。
在other sites上,人们报告通过切换到Pomelo.EntityFrameworkCore.MySql来解决此问题。
答案 1 :(得分:0)
这是由于数据库架构和模型不匹配,我添加了以下内容来解决此问题:
else if (property.ClrType == typeof(Nullable<bool>) || property.ClrType == typeof(Nullable<Boolean>))
property.SetValueConverter(new BoolToZeroOneConverter<Nullable<Int16>>());
答案 2 :(得分:0)
这通常是由于实体类属性类型和数据库列类型之间不匹配引起的。
答案 3 :(得分:0)
尝试belove代码:
[Required]
[Column(TypeName = "BIT")]
public bool IsDelete { get; set; }