I m试图迁移一个数据库,该数据库只是在运行时间才知道的,这意味着我无法利用包裹管理人Console更新数据库。 此外,它不仅是一个数据库,而且有许多数据库,而且对所有这些数据库来说都是相同的图象:
I m 采用Ninject 生成和注入<代码>DbContext的链接。 背景构造者认为:
public class MyEntities : DbContext
{
public MyEntities(string database) : base(database) { }
/* Properties code omitted. */
}
2. 瞬时情况的方法如下:
public MyEntities GetDatabase(string databaseName, string connectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
builder.InitialCatalog = databaseName;
MyEntities context = this._kernel.Get<MyEntities>(new ConstructorArgument(
"database", builder.ConnectionString));
Database.SetInitializer<MyEntities>(
new MigrateDatabaseToLatestVersion<MyEntities, MyEntitiesMigrationConfiguration>("MyEntities"));
return context;
}
当检索环境时,该方法便可形成连接线,并作为参数,将其通过至<代码>MyEntities的构造者。 我还在方法中具体规定了我想要的移徙类型(此处为<代码>)。 MigrateDatabaseTo LatestVersion。
移民法典如下:
public partial class MyAccountInMonth : DbMigration
{
public override void Up()
{
AlterColumn("AccountsInMonths", "MovementDebtMonth", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "MovementCreditMonth", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "BalanceMonth", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "MovementDebtAccumulated", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "MovementCreditAccumulated", c => c.Long(nullable: false));
AlterColumn("AccountsInMonths", "BalanceAccumulated", c => c.Long(nullable: false));
}
public override void Down() { /* Code omitted */ }
}
在我提出申请时,有以下错误:
Cannot find the object "AccountsInMonths" because it does not exist or you do not have permissions.
移民确实改变了栏目<代码>Accounts in Months从int
改为long
。
这是一种移民错误,因为跟踪线索需要它。 此时,我只能认为,这个问题是允许的,因为问题已经存在。 其他可能性是连接线上的一些问题。 没有人会这样做? 提前感谢!
PS:如果不清楚,我可以就这一问题提供更多信息。