2011-10-26 2 views
2

DbContextコンストラクターに接続文字列を渡す方法はありますか? 私は実際には、アプリケーションやweb.configの設定をする考えが嫌いですDbContextと接続文字列(プロバイダーはProviderManifestToken文字列を返しませんでした)

あなたのEFモデルを含むdllを参照したいときは、その愚かな設定をコピーするのではなく、中央の場所であり、dllがどこに行くかに関わらず、コンストラクターがその設定にアクセスできるようにします。

これは可能なのでしょうか、この欲求不満で暮らしていますか?すべてのEFモデルがWebアプリケーションまたはexeに存在するわけではありません。

おかげ

UPDATE: 私は、このエラーは、設定ファイルで不足している接続文字列に関連していたと思いました。私はSqlConnectionオブジェクトを渡しているし、それは私に同じエラーを与える。このエラーはなぜ発生しますか?

答えて

2

DbContext constructorオーバーロードを使用すると、接続文字列になる文字列を使用できます。私がやっているが、毎回私は私のローカルホストの\ SQLEXPRESSインスタンスをターゲットとしていない正確に何である

string connectionString = "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=\"data source=localhost;initial catalog=Test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework\""; 
using (DbContext db = new DbContext(connectionString)) 
{ 
    var m = db.Set<Main>().Take(1).First(); 
    Console.WriteLine(m.Id); 
} 
+1

スローし、エラーは:あなたがそのエラーを取得する理由 'ProviderManifestTokenを返しませんでしたプロバイダが –

+0

わからないstring.' 。設定ファイルから接続文字列をコピーし、 'DbContext'を作成して動作させました。比較のためのコードを含めるために回答を編集します。 –

+0

これが機能するには、接続文字列にメタデータファイルを指定する必要がありますか?私はPOCOのアプローチがそのメタデータを必要としないと考えました。私は、既存のデータベースのためのプレーンなSQL Server接続文字列を渡していますが、私はその構造を変更するつもりはありません。 –

関連する問題