0

私が開発したアプリケーションは、厳しい環境(開発、テスト、ステージング、本番)にデプロイされます。

開発中に、既存の開発データベースからエンティティモデルを作成しました。すべて正常に動作しますが、アプリケーションをテスト環境に配置したかったので、次の問題に気付きました。

データベースの構造はすべての環境で同じですが、データベーススキーマは環境ごとに異なります。たとえばCustomers、すべてのデータベースにテーブルがあります。私のローカル開発マシンではスキーマdbo([dbo].[Customers])がありますが、テスト環境ではスキーマはtest([test].[Customers])であり、ステージング環境ではスキーマはstag([stag].[Customers])などです。

したがって、アプリケーションをテスト環境にデプロイすると、データベースからデータが取得されません。これは、エンティティフレームワークがデータがにあることを期待している[dbo].[Customers]が、そのようなテーブルがないため、が存在するだけだから[test].[Customers]です。

dbo以外のスキーマを定義できることは知っていますが、デプロイメント環境に応じて異なるスキーマが必要になるため、これは役に立ちません。

助言がありますか?どういうわけか、各環境のすべてのデータベースでスキーマをdboに変更するようにDB管理者に依頼することになります...

4

1 に答える 1

2

最初にコードを使用している場合は、リンクされた質問から流暢なAPIアプローチを使用し、構成ファイルから現在のスキーマをロードする必要があります(展開ごとに構成を変更する必要があります)。

EDMXでObjectContextを使用している場合は、モデルアダプターを使用できます。DbContextでも機能する他の方法は、EFメタデータをファイルに保存し、アプリケーションの起動時にssdlファイルのスキーマを変更するコードを実行することです。

于 2012-05-23T08:01:49.330 に答える