私が開発したアプリケーションは、厳しい環境(開発、テスト、ステージング、本番)にデプロイされます。
開発中に、既存の開発データベースからエンティティモデルを作成しました。すべて正常に動作しますが、アプリケーションをテスト環境に配置したかったので、次の問題に気付きました。
データベースの構造はすべての環境で同じですが、データベーススキーマは環境ごとに異なります。たとえばCustomers
、すべてのデータベースにテーブルがあります。私のローカル開発マシンではスキーマdbo([dbo].[Customers]
)がありますが、テスト環境ではスキーマはtest([test].[Customers]
)であり、ステージング環境ではスキーマはstag([stag].[Customers]
)などです。
したがって、アプリケーションをテスト環境にデプロイすると、データベースからデータが取得されません。これは、エンティティフレームワークがデータがにあることを期待している[dbo].[Customers]
が、そのようなテーブルがないため、が存在するだけだから[test].[Customers]
です。
dbo以外のスキーマを定義できることは知っていますが、デプロイメント環境に応じて異なるスキーマが必要になるため、これは役に立ちません。
助言がありますか?どういうわけか、各環境のすべてのデータベースでスキーマをdboに変更するようにDB管理者に依頼することになります...