我向项目添加了一个很小的迁移。它只是将两列的数据类型更改为decimal(5,2)
。 Add Migration
命令生成迁移类。但是,Update-Database
命令会引发异常。
此外,Remove-Migration
引发相同的异常:
引发了一个异常,该异常可能是由于瞬时故障引起的。如果要连接到SQL Azure数据库,请考虑使用SqlAzureExecutionStrategy。
我正在使用本地SQL Server 2014数据库。我用于开发目的的连接字符串非常简单:
"DbConnectionString": "Server=.;Database=DBNAME;Trusted_Connection=True;MultipleActiveResultSets=true"
该文件存储在config.json
文件中。我正在使用最新版本的Visual Studio,即VS 2017 15.8.5。
我将Web项目更新为.NET Core 2.1,然后在Nuget中升级到了最新的稳定版2.1.4。这导致了错误消息的更改,该错误消息现在为:
引发了一个异常,该异常可能是由于瞬时故障引起的。考虑通过向
EnableRetryOnFailure()
调用中添加UseSqlServer
来启用瞬态错误恢复能力。
我上了启动课程,尽管确实怀疑这是问题的根源,但确实添加了EnableRetryOnFailure
属性。
services.AddDbContextPool<AppDbContext>(options => options.UseSqlServer(_configuration.GetConnectionString("DbConnectionString"), builder =>
{
builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null);
}));
生成的迁移类:
public partial class v50 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<decimal>(
name: "LnRrSncsm",
table: "Jobs",
type: "decimal(5, 2)",
nullable: false,
oldClrType: typeof(float));
migrationBuilder.AlterColumn<decimal>(
name: "LnRrQsnqcsm",
table: "Jobs",
type: "decimal(5, 2)",
nullable: false,
oldClrType: typeof(float));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<float>(
name: "LnRrSncsm",
table: "Jobs",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(5, 2)");
migrationBuilder.AlterColumn<float>(
name: "LnRrQsnqcsm",
table: "Jobs",
nullable: false,
oldClrType: typeof(decimal),
oldType: "decimal(5, 2)");
}
}
答案 0 :(得分:0)
好的,问题是硬编码到AppDbContextFactory中的连接字符串。解决方法是改用配置。
public AppDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DbConnectionString"), opts => opts.CommandTimeout((int)TimeSpan.FromMinutes(10).TotalSeconds));
return new AppDbContext(optionsBuilder.Options);
}