使用Entity Framework加载数据时,我遇到以下异常:
字符串未被识别为有效的布尔值。
我使用Code First Entity框架和MySql数据库。
我发现问题出在我的bool专栏上。当我在MySql中直接更改它们以使用BIT而不是自动生成的TINYINT时,一切正常。但有没有办法解决它而无需手动更改数据库中的数据类型?
我尝试在我的DbContext中添加它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties()
.Where(x => x.PropertyType == typeof(bool))
.Configure(x => x.HasColumnType("bit"));
base.OnModelCreating(modelBuilder);
}
但这似乎只会影响我添加bool列的新迁移。然后它们是正确的数据库类型BIT。
但最初的模型也有一些bool列。当我删除所有表并调用Update-Database重新创建它时,它会使用TINYINT类型生成它们,这在加载数据时再次产生错误。我必须再次在数据库中手动修复它。