提问人:A Coder 提问时间:11/15/2023 最后编辑:A Coder 更新时间:11/17/2023 访问量:128
Azure 管道 SQL 迁移 Ef 核心对象存在问题
Azure pipeline SQL Migration Ef Core Object exist issue
问:
我正在使用 ,通过管道在 Azure 应用服务中部署我的应用程序和数据库。.NET Core 6
EF Core Code first
使用管道任务生成文件并使用发布管道将其部署到数据库中。SQL Migration
.sql
现在,迁移文件是使用脚本生成的,并且也会进行部署。这里的问题是,当我更改模型文件(任何列更改,如或更改)并再次部署它时,使用脚本生成相同的文件,并且在部署期间它说.CREATE TABLE
Add
Delete
MaxLength
CREATE TABLE
TABLE NAME xyz already EXISTS
我期待类似任务做什么,验证和处理自己。或者有没有办法从迁移中生成文件。DACPAC
DACPAC
有人可以帮忙吗?
SQL迁移任务:
migrations add DbMigration --project $(Build.SourcesDirectory)\NotificationService.App/NotificationService.App.csproj
创建脚本任务:
migrations script --idempotent --output $(Build.SourcesDirectory)/SQL/migrations.sql --project $(Build.SourcesDirectory)\NotificationService.App/NotificationService.App.csproj --context NotificationDbContext
SQL 部署:
在发布管道中使用带有 as 的任务发生。Azure Sql Database Deplpyment
Deploy Type
Sql Script File
程序.cs:
builder.Services.AddDbContext<NotificationDbContext>(options => {
options.UseSqlServer(ConnectionStringValue.Value,
sqlServerOptionsAction: sqlOptions => {
sqlOptions.MigrationsHistoryTable("EFMigrationHistory", "dbo");
sqlOptions.MigrationsAssembly(typeof(NotificationDbContext).Assembly.GetName().Name);
sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null);
});
}, ServiceLifetime.Scoped);
DbContext:
public class NotificationDbContext : DbContext
{
public NotificationDbContext(DbContextOptions<NotificationDbContext> options)
: base(options)
{
}
public DbSet<Notification> Notification { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
public class MyDbContextFactory : IDesignTimeDbContextFactory<NotificationDbContext>
{
public NotificationDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<NotificationDbContext>();
optionsBuilder.UseSqlServer("ConnectionString..."
, options => {
options.MigrationsHistoryTable("EFMigrationHistory", "dbo");
});
return new NotificationDbContext(optionsBuilder.Options);
}
}
错误:
答: 暂无答案
下一个:行进立方体在网格中生成孔
评论
Azure Sql Database Deplpyment
Deploy Type
Sql Script File
system.debug
true