NugetなしでDBを移行するには?実稼働環境でVisual Studio with Nugetを使用することはできません。現在のところ、多くの例では、Visual Studioにナゲットを使用する方法しか教えていません。 生成されたDbMigrationクラスの使用方法は?EFコードNigetのない最初のDbMigration
12
A
答えて
12
最も簡単な方法は次のとおりです。DbContextを初期化するとき
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyDbContext,
MyDbMigrationsConfiguration>());
これは、マイグレーションを実行します。
あなたはまた、手動で実行を強制することができ:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
(私はあなたにも構成にTargetDatabase
を設定するために持っていると信じていますが、あなたが試すことができます)
2
4
をあなたが使用して最新のバージョンに移行することができますWeb.configの設定 - this blog post by Rowan Miller:
コードファーストマイグレーションを使用している場合は、MigrateDatabaseToLatestVersion initializを使用して自動的にマイグレーションするようにデータベースを設定できますエル。
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext,
MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
ただ、ここであなたのコンテキストクラスを入れ替える:System.Data.Entity.MigrateDatabaseToLatestVersionが内蔵されてEFに。この設定は、同じアイデアの古いAppSettingsバージョンを更新します。
これは、どの初期化子を使用するのかという質問は実際には設定が1つで、Web.configでこれを実行できるようにしたいと思っています。 。ここで
5
はオプションです:
- たちのNuGetパッケージ で船migrate.exeのコマンドラインツールを使用してください。
- MigrateDatabaseToLatestVersionイニシャライザは、 と記載されています。
- DbMigratorクラス から利用可能なランタイムAPIを使用してください。
0
私は、DbConfigurationクラスや自動移行を有効にすることなく、コード内で明示的に実行される移行を制御する方法を探していました。
だから私は、次の拡張を作成するために管理し、次のような移行を持つ、一例として
public static void RunMigration(this DbContext context, DbMigration migration)
{
var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
if (prop != null)
{
IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
var generator = new SqlServerMigrationSqlGenerator();
var statements = generator.Generate(operations, "2008");
foreach (MigrationStatement item in statements)
context.Database.ExecuteSqlCommand(item.Sql);
}
}
を:
public class CreateIndexOnContactCodeMigration : DbMigration
{
public override void Up()
{
this.CreateIndex("Contacts", "Code");
}
public override void Down()
{
base.Down();
this.DropIndex("Contacts", "Code");
}
}
あなたのDbContextを使ってそれを実行できます。
using (var dbCrm = new CrmDbContext(connectionString))
{
var migration = new CreateIndexOnContactCodeMigration();
migration.Up();
dbCrm.RunMigration(migration);
}
1
もう1つ解決策があります:
Using DB = New SHAContext()
If DB.Database.Exists() Then
Dim migrator As New DbMigrator(New SHAClassLibrary.Migrations.Configuration())
For Each m In migrator.GetDatabaseMigrations()
Try
migrator.Update(m)
Catch ex As Exception
End Try
Next
End If
'DB.test()
End Using
関連する問題
- 1. EFコード最初のデプロイ
- 2. EFコード最初のカスタムコレクション
- 3. EFコード最初のコンポジットキーマッピング
- 4. EFコードの最初のテーブルの関係
- 5. コードの最初のEF 4.1のComplexTypeコレクションプロパティ
- 6. EFコード最初の "トランザクションの問題"
- 7. EFコード最初のロールバックデータベーステーブルの設計
- 8. EF 4.1コードの最初のPOCOライブラリ
- 9. EFコードのナビゲーションプロパティのフィルタリング最初
- 10. EFコード最初のカントはデシベル
- 11. EFコードのサブクエリを最初に4.1
- 12. EFコードのenumsを最初に
- 13. WinformsとEFでのデータバインディング4.1コード最初
- 14. EFコード最初の多言語サポート
- 15. EF 4.1コードの最初のデータベースの初期化System.NullReferenceExceptionデータのロード
- 16. EF 6.1の異なるプライマリキーとの関係最初のコード
- 17. C#EFコード最初にGodaddyにデプロイ
- 18. オブジェクトに子どもが追加されない - EFコード最初
- 19. EFコード最初に関連するオブジェクトを返さない
- 20. EF CTP5コード最初の簡単なWindowsフォームアプリケーション
- 21. EFコード最初の抽象的な関係ですか?
- 22. EFコードの挿入/更新ロジックについて最初に
- 23. コードEFの最初のアプローチは私のためには役に立たない
- 24. c#EFコアマイグレーションコード最初の無効な列
- 25. asp.net EFコードPBXの管理のための最初のモデル
- 26. EF 4.3コードの最初のマッピング同じ型のN:M
- 27. EFコードの最初のナビゲーション同じテーブルへのプロパティ
- 28. Sql Anywhere 17 efコードの最初の移行のサポート
- 29. EFコードの問題最初の外部キーの推論
- 30. InitializeDatabaseのEF 6コードの最初の更新テーブル