2012-09-30 13 views
6

WindowsアプリケーションでSQL Server CE 4.0を使用し、Entity Frameworkを使用してそのモデルを作成しました。SQL Server CEに動的接続文字列を使用する方法は?

正常に動作しますが、私の問題は、接続文字列を変更するコンストラクタがなく、デフォルトではファイルから接続文字列を読み込むことです。

using (var Context = new MyEntitiesModel(//has no constructor)) 
{ 
     ... 
} 

私はそれがこの方法により、正常に動作しますが、私はapp.configファイル内の別の接続文字列を削除した場合、それは私にこれを与えたダイナミックな接続文字列と

using (var Context = new MyEntitiesModel()) 
    { 
     Context.Database.Connection.ConnectionString = entityConnection.ConnectionString; 
    } 

を作成します。

error = invalid metasource ....

デフォルトコンストラクタは、私はそれを処理することができます

どのようにそれを使用しているので?

+0

パラメータとしてDbConnectionをとるコンストラクタはありませんか? –

+0

はい接続文字列を変更するコンストラクタがありません – motevalizadeh

+1

app.configファイルにダミーの接続文字列を残すことはできませんか? – Seph

答えて

2

独自のコンストラクタを作成します。 MyEntitiesModelは部分クラスで、クラスの独自の部分部分を追加し、接続文字列を受け入れるコンストラクタを追加することができます。

public partial class MyEntitiesModel { 
    public MyEntitiesModel(string connectionString) : base(connectionString) { } 
} 
+0

エラー:データベースファーストとモデルファーストのT4テンプレートを使用して生成されたコードは、コードファーストモードで使用すると正しく動作しないことがあります。データベースファーストまたはモデルを継続的に使用するにはまず、実行中のアプリケーションの構成ファイルでEntity Framework接続文字列が指定されていることを確認します。データベースファーストまたはモデルファーストから生成されたこれらのクラスをコードで使用するにはまず、属性またはDbModelBuilder APIを使用して追加の構成を追加し、この例外をスローするコードを削除します。 – motevalizadeh

+0

接続文字列はどのように見えますか? –

+0

"データソース= | DataDirectory | \\ MyDb.sdf;パスワード= xxx;セキュリティ情報を保持する= True"; – motevalizadeh

1

ImはDbContextを使用しています。例: ObjectContextにも同様のコンストラクタオーバーロードのセットがあります。

System.Data.Entity DbContext例

Context = new BosMasterEntities(nameOrConnectionString: nameOrConnectionString); 

あなたは、同時に複数のDbsに接続することができます。

関連する問題