Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EF Core 8 support #1746

Closed
lauxjpn opened this issue Jan 16, 2023 · 93 comments
Closed

EF Core 8 support #1746

lauxjpn opened this issue Jan 16, 2023 · 93 comments
Assignees
Milestone

Comments

@lauxjpn
Copy link
Collaborator

lauxjpn commented Jan 16, 2023

We will use this issue to track the progress on supporting EF Core 8, including its previews.

@lauxjpn lauxjpn added this to the 8.0.0 milestone Jan 16, 2023
@lauxjpn lauxjpn self-assigned this Jan 16, 2023
@lauxjpn lauxjpn pinned this issue Jan 16, 2023
@tdtc-hrb
Copy link

We will use this issue to track the progress on supporting EF Core 8, including its previews.

Support, look forward to...

@DeepWorksStudios
Copy link

We would very much appreciate it if you would add support for EF Core 8 soon, as we would like to continue using maria DB.

@JamesAXapien
Copy link

Any updates?

@yukozh
Copy link
Member

yukozh commented Aug 7, 2023

I'm working on upgrade Pomelo.EFCore.MySql to 8.0-preview6, there are still several cases failing now. There is already a branch 8.0-wip in this repo.

@yukozh
Copy link
Member

yukozh commented Aug 8, 2023

2023-08-08

image

About 346 failed cases in functional tests.

93b76ef7976ec1ddf28c4141199c971

About 239 failed cases in functional tests.

@Ryangr0
Copy link

Ryangr0 commented Sep 7, 2023

Any progress here? There's lots of us that want to work with cutting edge stuff, but if you're dealing with for example MySql, it's difficult to find a workaround for making concrete implementations of repositories, basically, because everything online has relied on this third party package for years. I haven't made it work yet, so far.

@DeepWorksStudios
Copy link

I agree is there any progress ?

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Sep 29, 2023

Prerelease 8.0.0-beta.1 (compatible with EF Core 8.0 RC1) is now available on nuget.org.

Everything that worked in 7.0.0 should still work.
The release is backed by 29,527 tests.

There is full support for all new EF Core 8 features, except for primitive collections, which we have implemented but currently disabled by default, due to major bugs in MySQL and MariaDB. For more information about that, see #1791.

Expect about 2 more beta releases.
For the latest bits, use our nightly build feed.

(Also be aware that MariaDB versions 10.3, 10.7, 10.8 and 10.9 have reached their end-of-life, and MySQL 5.7 will reach its end-of-life shortly in October 2023).

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Oct 14, 2023

The latest prerelease 8.0.0-beta.2.ci.20231014172607 in our nightly build feeds is now compatible with EF Core 8.0.0-rc.2.

@Cyberboss
Copy link

Cyberboss commented Oct 20, 2023

Any chance 8.0.0-rc.2 can become a nuget prerelease?

@Seabizkit
Copy link

Seabizkit commented Nov 15, 2023

.net 8 released

please add a compatible nuget package version it can still be beta but at a bare min working to some degree..

@barruka
Copy link

barruka commented Nov 15, 2023

Just upgraded a working app from v7 packages to v8 packages:
EF Core version: 8.0.0
Database provider: Pomelo.EntityFrameworkCore.MySql 8.0.0-beta.1
Target framework: .NET 8

System.Collections.Generic.KeyNotFoundException: Method 'WithComposedConverter' in type 'Microsoft.EntityFrameworkCore.Storage.BoolTypeMapping' from assembly 'Microsoft.EntityFrameworkCore.Relational, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.

Exception thrown: 'System.TypeLoadException' in System.Private.CoreLib.dll
Exception thrown: 'System.Collections.Generic.KeyNotFoundException' in System.Private.CoreLib.dll

@benjaminoerskov
Copy link

Just upgraded a working app from v7 packages to v8 packages: EF Core version: 8.0.0 Database provider: Pomelo.EntityFrameworkCore.MySql 8.0.0-beta.1 Target framework: .NET 8

System.Collections.Generic.KeyNotFoundException: Method 'WithComposedConverter' in type 'Microsoft.EntityFrameworkCore.Storage.BoolTypeMapping' from assembly 'Microsoft.EntityFrameworkCore.Relational, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.

Exception thrown: 'System.TypeLoadException' in System.Private.CoreLib.dll Exception thrown: 'System.Collections.Generic.KeyNotFoundException' in System.Private.CoreLib.dll

Pomelo.EntityFrameworkCore.MySql 8.0.0-beta.1 works with dotnet 8-RC1. It does not work with DotNet8-RC2 or DotNet8. You will have to wait for the release of Pomelo.EntityFrameworkCore.MySql 8.0.0 (without beta)

@ShieruMzz
Copy link

Method 'WithComposedConverter' in type 'Microsoft.EntityFrameworkCore.Storage.BoolTypeMapping' from assembly 'Microsoft.EntityFrameworkCore.Relational, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Nov 15, 2023

8.0.0-beta.2 will be compatible with EF Core 8.0.0 and released later today.

Expect the official Pomelo 8.0.0 version around the end of the next week.

@setoy
Copy link

setoy commented Nov 15, 2023

Thanks for the heads-up! Do you still need us to report issues such as those?

System.MissingMethodException: Method not found: 'Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.Clone(Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo ByRef)'.
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlTypeMappingSource.FindMapping(RelationalTypeMappingInfo& mappingInfo)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.<>c.<FindMappingWithConversion>b__8_0(ValueTuple`4 k, RelationalTypeMappingSource self)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd[TArg](TKey key, Func`3 valueFactory, TArg factoryArgument)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.FindMappingWithConversion(RelationalTypeMappingInfo mappingInfo, Type providerClrType, ValueConverter customConverter)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSource.FindMapping(Type type, IModel model, CoreTypeMapping elementMapping)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.MemberClassifier.IsCandidateNavigationPropertyType(Type targetType, MemberInfo memberInfo, Model model, Nullable`1& shouldBeOwned)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.MemberClassifier.FindCandidateNavigationPropertyType(MemberInfo memberInfo, IConventionModel model, Nullable`1& shouldBeOwned)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.MemberClassifier.GetNavigationCandidates(IConventionEntityType entityType)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.ForeignKeyAttributeConvention.ProcessEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext`1 context)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnEntityTypeAddedNode.Run(ConventionDispatcher dispatcher)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.DelayedConventionScope.Run(ConventionDispatcher dispatcher)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionBatch.Run()
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ConventionBatch.Dispose()
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelInitialized(IConventionModelBuilder modelBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnModelInitialized(IConventionModelBuilder modelBuilder)
   at Microsoft.EntityFrameworkCore.Metadata.Internal.Model..ctor(ConventionSet conventions, ModelDependencies modelDependencies, ModelConfiguration modelConfiguration)
   at Microsoft.EntityFrameworkCore.ModelBuilder..ctor(ConventionSet conventions, ModelDependencies modelDependencies, ModelConfiguration modelConfiguration)
   at Microsoft.EntityFrameworkCore.ModelConfigurationBuilder.CreateModelBuilder(ModelDependencies modelDependencies)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies)
   at Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, ModelCreationDependencies modelCreationDependencies, Boolean designTime)
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel(Boolean designTime)
   at Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
   at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.<>c.<TryAddCoreServices>b__8_4(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
   at Microsoft.EntityFrameworkCore.DbContext.get_ContextServices()
   at Microsoft.EntityFrameworkCore.DbContext.get_Model()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityType()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.CheckState()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.get_EntityQueryable()
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.OrderBy[TSource,TKey](IQueryable`1 source, Expression`1 keySelector)

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Nov 15, 2023

Thanks for the heads-up! Do you still need us to report issues such as those?

@setoy Only if you would get them with a compatible EF Core version. In that case, create a new issue for it. Otherwise, missing methods are expected.

@antifree
Copy link

Hello @lauxjpn!

Happy new year!

Thanks a lot for such an amazing EF core provider for MySql.

Could you please tell me if there is ETA for the stable release?

I would be very grateful for the information!

@barruka
Copy link

barruka commented Jan 18, 2024

After bumped up many microservices from EF 7.0.15 & Pomelo 7.0.0 to EF 8.01 & Pomelo 8.0.0-beta.2, all are working fine, no problems at all database related !!!

@pantonis
Copy link

Guys its been more than 2 months since .NET 8 was released. Can we have a release date?

@alexeygritsenko
Copy link

Is it time to move to MySql.EntityFrameworkCore? :(

Yesterday I thought about this too. They just released EF 8 recently. But what I like about Pomelo is the lack of dependencies.

@paladinu
Copy link

Right now this is the only thing holding up out net8.0 deploy so I'm hopeful this will be resolved soon. Very much appreciate the work @lauxjpn and team are doing to get this across the line! Go team Pomelo!

@bradleylandis
Copy link

The new plan is to push all open features to the backlog, check and fix any critical bugs reported for 8.0.0-beta.2 and then directly go GA with 8.0.0.

Is there a place to see the list of critical bugs? Maybe people would be willing to pick some up if we knew what they were.

I think part of the problem here is how dotnet is being managed now. dotnet 7 is set to go out of support in just a few months and then dotnet 6 before the end of the year.

@felipe-villela
Copy link

It looks like it's missing advanced type mappings for the compiled model on 8.0.0-beta.2.

Issue opened here:
#1835

Similar problem on other provider (I posted there first by mistake, but deleted):
npgsql/efcore.pg#2949

@pantonis
Copy link

pantonis commented Feb 6, 2024

@lauxjpn Are you alive? :) What is the plan ?

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Feb 7, 2024

@pantonis Yeah, I am still here. Just got down with an unusually persistent cold that appears to be surprisingly hard to get rid of.

However, with the beginning of February, I am getting now time back on my hands, so good new for Pomelo. The plan is the same: Fix any critical bugs and then get the GA release out the door. If there isn't too much going wrong, this weekend should be possible as release date.

@pantonis
Copy link

pantonis commented Feb 7, 2024

@lauxjpn hope you are well man. You are not alone on this :) . The entire world has these persistent colds lately.

That is very good news. Thanks again and wishes for a speedy recovery!

@paladinu
Copy link

paladinu commented Feb 7, 2024

@lauxjpn do you have a "buy me a coffee" or any way for individual supporters to thank you?

@linchenrr
Copy link

@lauxjpn
Wonder if ToJson support will be included in the GA release?
#1752 (comment)

@fazer
Copy link

fazer commented Feb 9, 2024

@lauxjpn This is great news! Get well soon!

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Feb 12, 2024

Wonder if ToJson support will be included in the GA release?

@linchenrr Unfortunately not. I have a local work-in-progress branch regarding that feature, but it isn't production-ready yet and we will go GA now.


@lauxjpn do you have a "buy me a coffee" or any way for individual supporters to thank you?

@paladinu No, I don't, but I appreciate the sentiment.


It looks like it's missing advanced type mappings for the compiled model on 8.0.0-beta.2.

Issue opened here:
#1835

@felipe-villela We triaged this issue as critical. A fix will make it into 8.0.0 before the final release.

@rranjancoding
Copy link

@lauxjpn - I hope you are feeling much better now and thanks for all your hard work. Based on your earlier comment, I was expecting stable 8.0 release this weekend but it seems it didn't happen. By any chance, do you have a tentative date for the release? I've to take a call for our product release based on that.
Again, we all appreciate all your hard work. :-)

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Feb 12, 2024

@rranjancoding The fix for #1835 has just been merged.

We will release 8.0.0 GA now. ETA about 2 hours.

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Feb 13, 2024

Release 8.0.0 is now available on nuget.org.

Thanks to everybody for being patient and especially to everyone who contributed!

@lauxjpn lauxjpn closed this as completed Feb 13, 2024
@Angelinsky7
Copy link

@lauxjpn Thank you so much !

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Feb 28, 2024

Release 8.0.1 is now available on nuget.org.

@kasemov-mt
Copy link

Thank you all for your efforts

I have this problem when I enter a field of type blob, mediumblob or longblob, it shows in the console:
@P7='?' (Size = -1) (DbType = Binary)
Even though the entered data is smaller than the maximum field size.
I tried the pomelo provider and the MySql.EntityFrameworkCore provider and it gave me the same result.

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Mar 6, 2024

@kasemov-mt Please open a new issue, so we can take a look at it. This issue here was created to track the progress of our EF Core 8 support. People follow it to get informed about EF Core 8 related releases and don't want to get notified about other individual issues. Thanks!

@lauxjpn
Copy link
Collaborator Author

lauxjpn commented Mar 16, 2024

Release 8.0.2 is now available on nuget.org.

@lauxjpn lauxjpn unpinned this issue Dec 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests