MySQLNumberTypeMapping 'не поддерживает преобразование значений - PullRequest
0 голосов
/ 01 июня 2018

Я добавил несколько моделей, которые я использовал для подключения к базе данных SQL и теперь переношу их на MySQL.Я получаю эту ошибку при запуске: dotnet ef update --context {context}

Blockquote System.NotImplementedException: MySQLNumberTypeMapping не поддерживает преобразование значений.Поддержка преобразования значений обычно требует изменений в поставщике базы данных.в Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.Clone (преобразователь ValueConverter) в Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.b__7_0 (ValueTuple 3 k) at System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd (ключ TKey.Engine.Signed) .Функция для работы с ключом T6, функция FunCe.RelationalTypeMappingSource.FindMapping (член MemberInfo) при Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.PropertyDiscoveryConvention.IsCandidatePrimitiveProperty (PropertyInfo PropertyInfo) в Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.PropertyDiscoveryConvention.Apply (InternalEntityTypeBuilder entityTypeBuilder) в Microsoft.EntityFrameworkCore.Metadata.Соглашенияl.ConventionDispatcher.ConventionVisitor.Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.RelationshipDiscoveryConvention.DiscoverRelationships (InternalEntityTypeBuilder entityTypeBuilder) ... ...

MySQLNumberTypeMapping не поддерживает преобразования значений.Для поддержки преобразования значений обычно требуются изменения в поставщике базы данных.

Вот одна из таблиц, которые я собираюсь создать: (Я удалил любую ссылку на DataType (*) или перечисления, которые я, возможно, мог быбыть проблема с MySQL.

[Key]
public int ID { get; set; }
[StringLength(50)]
public string Name { get; set; }
public int? PropertyID { get; set; }
public Property Property { get; set; }

//public SelectList Animals { get; set; }
//public string AnimalTypes { get; set; }
[Display(Name="Spesie")]
public int? AnimalTypeID { get; set; }
[Display(Name = "Spesie")]
public AnimalType AnimalType { get; set; }

public bool Male { get; set; }
public bool Trophy { get; set; }
public int Quantity { get; set; }
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "R{0:N}")]
public decimal Price { get; set; }
[StringLength(2000)]
public string Comments { get; set; }

Почему MySQL не нравятся эти определения? или что пытается преобразовать это значение?

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Чтобы продолжить разработку, я нашел подходящее решение для

Install-Package Pomelo.EntityFrameworkCore.Mysql -version 2.1.0-rc1-final

используя консоль nuget и измените любую ссылку на options.UseMySQL на options.UseMySql.

Это позволило мне продолжить работу с dotnet 2.1 и использовать базу данных mysql.

Надеюсь, это поможет!

0 голосов
/ 26 февраля 2019

Мне удалось решить эту проблему, обновив MySQL.Data.EntityFrameworkCore с 6.10.8 до 8.015 (выпущено 01.02.2017) и обновив .NET Core с 2.0 до 2.2.

Я считаю, что проблема имеетбыл исправлен в версии 8 .

0 голосов
/ 01 июня 2018

Поставщик данных MySQL не поддерживает функцию преобразования значений.Вы получаете это исключение, потому что вы используете перечисления в качестве типов данных, которые должны быть преобразованы поставщиком данных MySQL, который не реализует эту функцию и поэтому выдает исключение NotImplementedException.

Об этой ошибке уже сообщалось: https://bugs.mysql.com/bug.php?id=89855

Также существует проблема с открытым github: https://github.com/aspnet/EntityFrameworkCore/issues/11078

Короче говоря, MySQL.Data.EntityFrameworkCore, работающий на .Net Core 2.0, работает неправильно при использовании Microsoft.EntityFrameworkCore.Relational 2.1.0-preview1-final, несмотря на заявления о том, что на нем должны работать совместимые поставщики 2.0.

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