Базовая структура Entity Framework DbContext.SaveChanges создает исключение System.InvalidCastException: невозможно преобразовать объект типа System.Boolean в тип System.Int16. - PullRequest
0 голосов
/ 03 июня 2019

Я использую .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>());

Что мне не хватает?

Ответы [ 3 ]

0 голосов
/ 05 июня 2019

Это произошло из-за несоответствия схемы базы данных и модели, и я добавил следующее, чтобы исправить проблему:

                    else if (property.ClrType == typeof(Nullable<bool>) || property.ClrType == typeof(Nullable<Boolean>))
                        property.SetValueConverter(new BoolToZeroOneConverter<Nullable<Int16>>());
0 голосов
/ 05 июня 2019

Обычно это вызвано несоответствием между типом свойства класса сущности и типом столбца базы данных.

0 голосов
/ 04 июня 2019

Это ошибка в реализации MySQL EF.Core: ошибка 93028 .

На других сайтах люди сообщали об устранении проблемы, переключаясь на Pomelo.EntityFrameworkCore.MySql .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...