我在尝试初始化数据库时遇到了一个问题。在我的应用程序中,我有两个DbContext,一个是IdentityDbContext,另一个是AuctionhouseDbContext,它们都使用同一个数据库但不同的模式。当我尝试使用"Update-Database -Context IdentityDbContext"命令来初始化数据库时,我会收到以下异常信息:
这是涉及到的组件的相关代码:
这个
任何关于如何在迁移创建过程中解决此问题的帮助或指导将不胜感激。谢谢!
我还没有找到任何不匹配的地方。我已经安装了每个软件包的最新预发布版本,除了NSwag。
System.MissingMethodException: Method not found: 'System.Data.Common.DbParameter System.Data.Common.DbBatchCommand.CreateParameter()'.
at Npgsql.NpgsqlCommand..ctor(String cmdText, NpgsqlConnection connection)
at Npgsql.NpgsqlCommand.CreateCachedCommand(NpgsqlConnection connection)
at Npgsql.NpgsqlConnection.CreateCommand()
at Npgsql.NpgsqlConnection.CreateDbCommand()
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.CreateDbCommand(RelationalCommandParameterObject parameterObject, Guid commandId, DbCommandMethod commandMethod)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Create()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Method not found: 'System.Data.Common.DbParameter System.Data.Common.DbBatchCommand.CreateParameter()'.
这是涉及到的组件的相关代码:
public class IdentityDbContext
: IdentityDbContext<ApplicationUser, IdentityRole<Guid>, Guid>
{
public const string Schema = "identity";
public IdentityDbContext(
DbContextOptions<IdentityDbContext> options)
: base(options) { }
protected override void OnModelCreating(
ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(Schema);
base.OnModelCreating(modelBuilder);
}
}
这个
ServiceCollectionExtensions.cs
文件用于配置 DbContexts,就像这样:var connectionString = configuration.GetConnectionString("IdentityConnection");
services.AddDbContext<IdentityDbContext>(options =>
{
options.UseNpgsql(connectionString, options =>
{
options.MigrationsHistoryTable(
tableName: HistoryRepository.DefaultTableName,
schema: IdentityDbContext.Schema);
});
});
任何关于如何在迁移创建过程中解决此问题的帮助或指导将不胜感激。谢谢!
Directory.Packages.props
文件的内容如下:<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="8.0.0-rc.2.23480.2" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0-rc.2.23480.1" />
<PackageVersion Include="NSwag.AspNetCore" Version="13.20.0" />
<PackageVersion Include="NSwag.MSBuild" Version="13.20.0" />
<PackageVersion Include="MediatR" Version="12.1.1" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.0-rc.2.23480.2" />
<PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.0-rc.2.23480.2" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0-rc.2" />
</ItemGroup>
</Project>
Directory.Build.props
的内容如下:<Project>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
我还没有找到任何不匹配的地方。我已经安装了每个软件包的最新预发布版本,除了NSwag。
dotnet --list-sdks
的输出结果? - undefined