2

Web アプリケーションごとに異なるデータベース スキーマを持つ巨大なデータベースがあります。例: WebApp1 は Schema1.Tables を使用します。WebApp2 は Schema2.Tables などを使用します。

現在、Entity Framework 4.3.1 を使用する新しい Web アプリケーション (WepApp3) を開発しています。WebApp3 は Schema3 のみに関係し、Schema3 の一部であるデータベース オブジェクトのみを使用する必要があります。WepApp3 でいくつかのエンティティを作成した場合、これらのエンティティを schema3.tables としてデータベースに移行するにはどうすればよいですか? まだ初期移行を行う必要がありますか?

助けてください。

4

2 に答える 2

1

うまくいくようです。既存のデータベースから始めました。いくつかのモデルを使用して mvc アプリ ( app1 ) を作成しました。次に、このアプリのスキーマをデータベースに作成しました。あなたのコメントに従って、モデルのスキーマを指定しました。次に、コード ベースの移行スクリプトの機能を使用して、データベースを更新しました。移行スクリプトは、既存のものを破損することなく、新しいスキーマの下に 2 つのテーブルを作成しました。EF が変更情報を含む行を含む __MigrationHistory テーブルを作成したことに気付きました。次に、別のアプリ、新しいスキーマを作成し、移行スクリプトを少し調整して移行プロセスを繰り返しました。スクリプトには、 app1の 2 つのテーブルを再作成するコードが含まれていました。. そのコードをスクリプトから削除しました。次に、EF は新しいスキーマの下に新しいテーブルを正常に作成し、__MigrationHistory テーブルに新しい変更に関する情報を含む新しい行を作成しました。データを含め、既存のものはすべて変更されません。

于 2012-05-18T14:50:23.583 に答える
1

同じデータベースに複数の EF モデルを含めることはできないと思います。EF は、そのモデルとは関係のないテーブルに触れようとするべきではありませんが、別の EF アプリを同じデータベースに追加しようとすると、同じ MetaData テーブルを共有しようとするため、問題が発生します。

コード ファーストを使用して新しいモデルを生成する場合、DbContext に含めるスキーマを指定できます。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyEntity>().ToTable("MyEntity", "Schema3");
}

共有アプリがない場合、スキーマを別のデータベースに移行するオプションはありますか?

于 2012-05-17T19:54:04.843 に答える