mysqlnumbertypemapping'不支持值转换

rggaifut  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(446)

我已经添加了一些模型,这些模型过去用于连接到sql数据库,现在正在移植到mysql。运行时出现以下错误: dotnet ef update --context {context} blockquote system.notimplementedexception:“mysqlnumbertypemapping”不支持值转换。支持值转换通常需要更改数据库提供程序。位于microsoft.entityframeworkcore.storage.relationaltypemapping.clone(valueconverter converter)处 3 k) at System.Collections.Concurrent.ConcurrentDictionary 2.获取或添加(tkey,func) 2 valueFactory) at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.FindMappingWithConversion(RelationalTypeMappingInfo& mappingInfo, IReadOnlyList 1个主体),位于microsoft.entityframeworkcore.storage.relationaltypemappingsource.findmapping(memberinfo成员),位于microsoft.entityframeworkcore.metadata.conventions.internal.propertydiscoveryconvention.iscandidateprimitiveproperty(propertyinfo propertyinfo)microsoft.entityframeworkcore.metadata.conventions.internal.propertydiscoveryconvention.apply(internalentitytypebuilder entitytypebuilder)位于microsoft.entityframeworkcore.metadata.conventions.internal.conventiondispatcher.runvisitor.VisitionEntityTypeAdded(OneTityTypeAddedNode节点)位于microsoft.entityframeworkcore.metadata.conventions.internal.conventiondispatcher.conventionvisitor.visitconventionscope(conventionscope节点)microsoft.entityframeworkcore.metadata.conventions.internal.conventiondispatcher.conventionvisitor.visitconventionscope(conventionscope节点),位于microsoft.entityframeworkcore.metadata.conventions.internal.relationshipdiscoveryconvention.DiscoveryRelationships(internalentitytypebuilder entitytypebuilder)。。。
“mysqlnumbertypemapping”不支持值转换。支持值转换通常需要更改数据库提供程序。
下面是我希望创建的表:(我删除了对datatype(*)或enum的任何引用,我认为这可能是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不喜欢这些定义?或者这个值转换它试图做什么?

epfja78i

epfja78i1#

我可以通过升级来解决这个问题 MySQL.Data.EntityFrameworkCore 从6.10.8升级到8.015(发布于2019年2月1日),并将.net core从2.0升级到2.2。
我相信这个问题已经在第8版中解决了。

xsuvu9jc

xsuvu9jc2#

mysql数据提供程序没有实现值转换功能。出现此异常是因为使用枚举作为数据类型,必须由未实现此功能的mysql数据提供程序转换,因此引发notimplementedexception。
已报告此错误:https://bugs.mysql.com/bug.php?id=89855
还有一个开放的github问题:https://github.com/aspnet/entityframeworkcore/issues/11078
简而言之,运行在.net core 2.0上的mysql.data.entityframeworkcore在使用microsoft.entityframeworkcore.relational 2.1.0-preview1-final时无法正常工作,尽管有人声称2.0兼容的提供程序应该在其上工作。

kadbb459

kadbb4593#

为了继续发展我找到了一个合适的解决办法就是
安装pomelo.entityframeworkcore.mysql包-版本2.1.0-rc1-final
使用nuget控制台并将options.usemsql的任何引用修改为options.usemsql。
这使我能够继续使用dotnet2.1并利用mysql数据库。
希望这有帮助!

相关问题