Ошибки при использовании поставщика Pomelo MySQL EF с предварительным просмотром ASP.NET Core 2.0

Я использую Pomelo 1.1.2 в ASP.NET Core 2.0 Preview, а также EF 2.0 Preview. С их демо-кодом я получаю следующее исключение при каждом вызове "UseMySql":

System.TypeLoadException occurred
  HResult=0x80131522
  Message=Method 'Clone' in type 'Microsoft.EntityFrameworkCore.Internal.MySqlOptionsExtension' from assembly 'Pomelo.EntityFrameworkCore.MySql, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
  Source=<Cannot evaluate the exception source>
  StackTrace:
   at Microsoft.EntityFrameworkCore.MySqlDbContextOptionsExtensions.UseMySql(DbContextOptionsBuilder optionsBuilder, String connectionString, Action`1 mySqlOptionsAction)
   at CoreTest1.Startup.<ConfigureServices>b__4_0(DbContextOptionsBuilder options) in C:\DEV\Experiments\CoreTest1\CoreTest1\Startup.cs:line 27
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass0_0`1.<AddDbContext>b__0(IServiceProvider p, DbContextOptionsBuilder b)
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.DbContextOptionsFactory[TContext](IServiceProvider applicationServiceProvider, Action`2 optionsAction)
   at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass5_0`1.<AddCoreServices>b__0(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactoryService(FactoryService factoryService, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitSingleton(SingletonCallSite singletonCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass17_0.<RealizeService>b__0(ServiceProvider provider)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   at CoreTest1.Controllers.HomeController.Index() in C:\DEV\Experiments\CoreTest1\CoreTest1\Controllers\HomeController.cs:line 18
   at Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__18.MoveNext()

Хотите знать, если это только из-за библиотек предварительного просмотра 2.0? Есть идеи? Я попытался просмотреть их исходный код на Git, чтобы увидеть, могу ли я обнаружить что-то неправильно, но не смог.

3 ответа

Решение

Давайте посмотрим на анонс EF Core 2.0 Preview 1:

Если вы используете сторонний поставщик базы данных, проверьте, выпустили ли они обновление, зависящее от 2.0.0-preview1-final. Если они есть, то просто обновитесь до новой версии. Если нет, то вы не сможете выполнить обновление, поскольку версия 2.0 содержит несколько критических изменений и 1.* поставщики не будут работать с ней.

Это означает, что Pomelo не будет поддерживать EF Core 2.0, пока не будет выпущен сопоставимый выпуск.

Недавно столкнулся с той же ошибкой при обновлении моего проекта до.NET Core 2.0. На данный момент решение описано в https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql По сути, обновление пакета до предварительно выпущенной версии 2.0.0-rc-*

<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rc-*" />

Я использовал mvc asp.net core 2.0 с Pomelo.EntityFrameworkCore.MySql версии 2.1.4, и я не могу обновить свою базу данных. На консоли диспетчера пакетов у меня появилось сообщение "У вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса, близкого к версии для вашего сервера MySql, в руководстве" после нескольких неудачных попыток, которые я попытался с помощью Pomelo.EntityFrameworkCore. MySql версия 2.0.0 и, наконец, я в игре...

Другие вопросы по тегам