0

私はマルチテナント MVC 4 アプリケーションに取り組んでおり、顧客アプローチごとに 1 つのスキーマを使用しています。顧客がサインアップしたときに、データベースの移行をコードで実行したいと考えています。これは EF 5/Code First Migrations を使用して可能ですか?

そのため、顧客がサインアップすると、dbo でアカウントを作成します。次に、サブドメインがデータベースにスキーマとして存在するかどうかを確認します。存在しない場合は、スキーマを作成し、理想的には移行を実行します。

ありがとう!

明確化

データベースに顧客の新しいスキーマを作成するときに、その新しいスキーマの移行を実行したいと考えています。たとえば、

schema1.Products と schema2.Products があります。

4

2 に答える 2

2

あなたが望むものを私が正しく理解しているなら...

このようなものを使用できます

var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
    migrator.Update();  

または、自分で作成したい場合もありますinitializer-たとえば、私の投稿をチェックしてください...

EFでのIDatabaseInitializerの正しい使用法は何ですか?

mysql データベースを作成および移行するための初期化子を作成する方法は?


あなたのアプローチで私が目にする問題は、アカウントモデル/データベースと、移行しようとしているモデル/データベースを「分離」する必要があるということです。マルチテナントについて言及したので、すでにそうかもしれません。

しかし、アカウントなどの「基本エンティティ」を作成して、残りを上に移行することもできると思います。これは少し複雑なシナリオです。モデルは開始時 (最初の使用時) に (接続ごとに) 1 回作成され、それ以降はキャッシュされます。そのための唯一の方法は、リロードを再開することだと思います(私の言葉を保持しないでください。ここで大声で考えてください)

于 2013-05-01T15:38:47.330 に答える
0

これがあなたが求めているものかどうかわからない場合は、コマンド ラインからコードの移行を実行できます。

packages\EntityFramework.5.0.0\tools\migrate.exe Example.dll /startUpDirectory:Example\bin

したがって、理論的には、新しい顧客がサインアップするたびにこれを呼び出すことができます。

于 2013-05-01T15:26:10.257 に答える