エンティティフレームワークを使用すると、どのデータベースに接続したいのかをスタックでかなり高く設定し、すべてのクエリでEFを使用することができますか?Entity Framework 4はマルチデータベースをサポートしていますか?
モデルごとに異なるデータベースがあり、すべてのモデルが同じデータベースに接続されているシナリオではありませんが、このデータベースはURLやサブドメインなどの条件によって異なります。 。
「はい」の場合、これはdbプーリングなどにどのような影響がありますか?
エンティティフレームワークを使用すると、どのデータベースに接続したいのかをスタックでかなり高く設定し、すべてのクエリでEFを使用することができますか?Entity Framework 4はマルチデータベースをサポートしていますか?
モデルごとに異なるデータベースがあり、すべてのモデルが同じデータベースに接続されているシナリオではありませんが、このデータベースはURLやサブドメインなどの条件によって異なります。 。
「はい」の場合、これはdbプーリングなどにどのような影響がありますか?
あなたのObjectContextを作成するとき、コンストラクタのパラメータは、接続文字列です:
http://msdn.microsoft.com/en-us/library/bb739017.aspx
プールには何の意味があってはなりません。
はい、これを行うことができます。 ObjectContextを作成するときに適切な接続文字列を使用するだけで、使用するデータベースに接続できます。私たちはこれを頻繁に行います。
しかし、私は正確に同じデータベース(-schema)ではなく、MS-SQLからOracleへの切り替えを想定していますか? –
正しい。プロバイダは、アセンブリにコンパイルされたSSDLで指定されます。このスイッチを実行する場合は、edmxのコンパイルアクションを変更して出力フォルダにコピーし、実行時に別のプロバイダを使用するようにssdlを手動で切り替えることができます。詳細はこちらhttp://mosesofegypt.net/post/Multiple-database-support-with-Entity-Framework.aspx – Jeff
DbContext
を使用するたびに、クエリを実行する前にconnectionStringを変更するだけで済みます。
たとえば、あなたは、単に初期カタログ名に変更することができます
YourDbContext.Database.Connection.ConnectionString = "data source=LAPKEVIN\\SQLKEVIN;Integrated Security=SSPI;Initial Catalog=YourDatabase";
がアクション火災の前にグローバルに設定されてObjectContextに何かあり、その後、閉じましたか?つまり、リクエストごとに1回これを行うことはできますか? – codecompleting
まあ、オブジェクトコンテキストはスレッド間で共有されるべきではなく、一般的に(作業単位あたりの)寿命が短くなければなりません。そう、はい、接続文字列です。ObjectContextの作成ごとに変更できるものです。 – Jeff
それを作成し、それを破壊し、ページ要求の最初/最後は安全ですか?ベストプラクティス? (MVCのように、アクション実行前後) – codecompleting