Entity Framework Connectionにメタデータプロパティが必要なのはなぜですか?

connection connection-string data-access-layer database entity-framework

質問

DALをLINQの使用からEntity Frameworkに切り替えました。私のアプリケーションは現在のユーザーに応じて異なるデータベースに接続するので、実行時にDataContextを動的に作成し、適切な接続文字列を渡す必要があります。しかし、古い接続文字列を使用してEntity Framework接続をプログラムで作成しようとすると、接続に失敗しました。正確に言うと、接続文字列 "server"内のキーを認識できないと不平を言っていました。

Entity Framework接続を機能させるには、これを実行する必要があることがわかりました。

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());

どうしてこれなの?
Metadataプロパティとは何ですか?
それが複数の異なる接続に対して常に同じであることは問題になるだろうか?
それは何でしょうか?
これを回避する方法はありますか?

前もって感謝します!

更新1:更新Randolphoをありがとう、しかし...
私がこの問題を抱えているのは、接続文字列を設定ファイルに保存できないからです。接続文字列は、ユーザーが接続している実行時に動的に決定されます。

これが私の正確なシナリオです。
ユーザーAが接続している場合、アプリはデータベースAからデータを取得します。ユーザーBが接続している場合、アプリはデータベースBからデータを取得します。
接続文字列はメインデータベースに格納され、その数は潜在的に無限です。ユーザーを追加するたびに、web.configにアクセスする必要はありません。最終的に巨大になることは言うまでもありません。

受け入れられた回答

これらのリンクは非常に有益です。

http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

http://weblogs.asp.net/pgielens/archive/2006/08/21/ADO.NET-Entity-Framework-Metadata.aspx

一番下の行? Entity Frameworkは、エンティティマッピングを構築するためのメタデータを必要とします。

また、コードで構築するのではなく、接続情報を設定ファイルに移動することを検討する必要があります。最初のリンクはその方法をあなたに示します。


人気のある回答

Randolphoの答えを拡大する:

メタデータプロパティは、特に.SSDL(Storage Model)、.CSDL(Conceptual Model)、および.MSL(Mapping Model)ファイルの場所を指します。これら3つのファイルは基本的にEntity Data Modelです。 "res://" URIスタイル修飾子は、ファイルがコンパイル済みEDMアセンブリ内のリソースとして埋め込まれていることを示します。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow