2012-03-15 15 views
2

私はEFを使用して、MVC3アプリケーションから始めています。 200を超えるテーブルを持つデータベースがあります。私はDBFirstメソッドを使用しています。異なるEntityFrameworkモデルでも同じ接続文字列ですか?

私のアイデアは、DBスキーマ全体を1つの大きなモデルにする代わりに、アプリケーションのさまざまな領域にEFModelを作成することでした。私は今、問題に遭遇しました。それぞれのモデルが独自の接続ストリングを望んでいるようです。私は正常に1つの共通のconnestionstringに変更することに成功していません。それは可能ではありませんか?私はそれがバックグラウンドで同じデータベースであると思っています...

ここで私は完全にオフですか?すべてのテーブルを1つの大きなモデルにドラッグする必要がありますか?または、私がコネクションストリングをたくさん取るという事実を受け入れますか?

洞察?

答えて

1

EDMX metadata is part of the EF connection stringのため、複数のEDMXモデルに対して1つのEF接続文字列を使用することはできません。

代わりに5のあなたこれは、これらの接続文字列のすべてが埋め込まれたDB接続文字列が含まれていることを除いて、あなたのための問題になることはありません、あなたが一つの場所でそれを変更することがありますにすることができ、しかし、更新実行時のDB接続文字列部分はEntityConnectionStringBuilderです。したがって、DB接続用に「通常の」(非EF)接続文字列を使用し、コンテキストを作成するときにEntityConnectionStringBuilderを使用してEF接続文字列に置き換えることができます。私の頭の上オフ

、コードのようなものになります。

var dbCS = ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString; 
var model1CS = ConfigurationManager.ConnectionStrings["Model1ConnectionString"].ConnectionString; 
var ecsb = new EntityConnectionStringBuilder(model1CS); 
ecsb.ProviderConnectionString = dbCS; 

return new Model1Entities(ecsb.ToString()); 
0

多分web.configで接続文字列またはその名前をハードコーディングできるベースコンテキストを作成する必要があります。コンテキストの親はal dbの一部だけを持ち、いくつかの共通のエンティティを親のコンテキストで記述することさえあれば、すべての子でそれらを使うべきです。

0

をなぜあなたはEntity Frameworkのを使用する必要がありますか? EFはあなたにとって正しい解決策ではないかもしれません。

Simple.Dataのような他のORMを使用することをお勧めします。

関連する問題