I am trying to migrate a project from .NET Core 3.1 to .NET 6, and I am getting this error for the test project
System.MissingMethodException: Method not found: 'Void Microsoft.EntityFrameworkCore.MutableAnnotatableExtensions.SetOrRemoveAnnotation(Microsoft.EntityFrameworkCore.Metadata.IMutableAnnotatable, System.String, System.Object)'.
Stack Trace:
RelationalEntityTypeExtensions.SetTableName(IMutableEntityType entityType, String name)
RelationalEntityTypeBuilderExtensions.ToTable(EntityTypeBuilder entityTypeBuilder, String name)
RelationalEntityTypeBuilderExtensions.ToTable[TEntity](EntityTypeBuilder1 entityTypeBuilder, String name) <>c.<OnModelCreating>b__359_0(EntityTypeBuilder
1 entity) ModelBuilder.Entity[TEntity](Action1 buildAction) EntitiesContext.OnModelCreating(ModelBuilder modelBuilder) ModelCustomizer.Customize(ModelBuilder modelBuilder, DbContext context) ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder, ModelDependencies modelDependencies) ModelSource.GetModel(DbContext context, ModelCreationDependencies modelCreationDependencies, Boolean designTime) DbContextServices.CreateModel(Boolean designTime) DbContextServices.get_Model() <>c.<TryAddCoreServices>b__8_4(IServiceProvider p) CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor
2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) <>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope) ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) ServiceProviderEngineScope.GetService(Type serviceType) ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) DbContext.get_DbContextDependencies() DbContext.get_ContextServices() DbContext.get_InternalServiceProvider() IServiceProvider>.get_Instance() InfrastructureExtensions.GetService[TService](IInfrastructure
1 accessor) AccessorExtensions.GetService[TService](IInfrastructure`1 accessor) DatabaseFacade.get_Dependencies() DatabaseFacade.EnsureCreated() DbContextTestBase.ctor() line 27 MessageProcessorFixture.ctor() line 29 RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions)
This is my InMemory db builder
public class DbContextTestBase : IDisposable
{
private bool isDisposed = false;
private readonly LoggerFactory _loggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() });
protected EntitiesContext DbContext { get; }
public DbContextTestBase()
{
var options = new DbContextOptionsBuilder<EntitiesContext>()
.UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
.EnableSensitiveDataLogging(true)
.UseLoggerFactory(_loggerFactory)
.UseLazyLoadingProxies()
.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning))
.Options;
DbContext = new EntitiesContext(options);
DbContext.Database.EnsureCreated();
}
protected virtual void Dispose(bool disposing)
{
if (!isDisposed)
{
if (disposing)
{
DbContext.Database.EnsureDeleted();
DbContext.Dispose();
}
isDisposed = true;
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
It happens on this line
DbContext.Database.EnsureCreated();
Any help will be appreciated
The solution was upgrading my entities package to .NET 6
I would like to expand on the accepted answer since I had the same error. This happens when you are mixing your entity framework library versions.
For example: If you have a code base that uses Entity Framework 5.0.10 and you install Entity Framework 6.0.0 (like Microsoft.EntityFrameworkCore.InMemory) package in your parent project (like tests project) then you will get this exception.
Instead, make sure to match up your versions, in this case, the test project would need Microsoft.EntityFrameworkCore.InMemory 5.0.10 too, or the 5.0.10 upgraded to 6.0.0.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With