【发布时间】:2022-01-20 20:14:51
【问题描述】:
我正在尝试将项目从 .NET Core 3.1 迁移到 .NET 6,但测试项目出现此错误
System.MissingMethodException:找不到方法:'无效 Microsoft.EntityFrameworkCore.MutableAnnotatableExtensions.SetOrRemoveAnnotation(Microsoft.EntityFrameworkCore.Metadata.IMutableAnnotation, System.String, System.Object)'。
堆栈跟踪:
RelationalEntityTypeExtensions.SetTableName(IMutableEntityType entityType,字符串名称)
RelationalEntityTypeBuilderExtensions.ToTable(EntityTypeBuilder entityTypeBuilder,字符串名称)
RelationalEntityTypeBuilderExtensions.ToTable[TEntity](EntityTypeBuilder1 entityTypeBuilder, String name) <>c.<OnModelCreating>b__359_0(EntityTypeBuilder1 实体) 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) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument 参数)CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite、RuntimeResolverContext 上下文、ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType) CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite callSite, RuntimeResolverContext 上下文) 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](IInfrastructure1 访问器)AccessorExtensions.GetService[TService](IInfrastructure`1 访问器) DatabaseFacade.get_Dependencies() DatabaseFacade.EnsureCreated() DbContextTestBase.ctor() line 27 MessageProcessorFixture.ctor() line 29 RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 wrapExceptions)
这是我的 InMemory 数据库构建器
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);
}
}
发生在这一行
DbContext.Database.EnsureCreated();
任何帮助将不胜感激
【问题讨论】:
标签: .net entity-framework-core