2011-02-02 6 views
1

私は2つのプロジェクトがあります。コンソールアプリケーションから「データ」をどのように分けることができますか?

  • コンソールアプリケーションを
  • クラスライブラリ

私はClass libraryは、クラスを定義するファイルをEDMX作成など、部分的な接続文字列を持つようにしたい:

<add name="BlogEntities" connectionString="metadata=res://*/Blog.csdl|res://*/Blog.ssdl|res://*/Blog.msl;provider=System.Data.SqlClient;provider connection string='{0}'" providerName="System.Data.EntityClient" /> 

クラスライブラリでcsdl,ssdl、およびmslファイル。私のコンソールアプリケーションはメタデータを気にせず、database,userpasswordと定義します。

このように2つの接続文字列を分割するにはどうすればよいですか?

答えて

0

私はすべてのエンティティに同じ名前の名前を付けることができます。 Entities。私のapp.configはコンソールアプリケーション上にある必要がありますが、私は単一のConnectionStringを使用することができます。

<add name="Entities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLExpress;Initial Catalog=Test;Persist Security Info=True;User ID=test;Password=test;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

メタデータはres://*/に設定でき、グローバルに動作します。 エンティティフレームワークで使用されるFrom MSDN:

モデルとマッピングメタデータが MetadataWorkspaceにロードされます。このメタデータは、グローバルにキャッシュされた であり、同じアプリケーションドメインの にある のObjectContextの他のインスタンスで使用できます。

私はまた、任意のプラグイン可能なモジュールは、コンテキストコンストラクタに渡すConnectionString使用することを強制することができます:私は `プラグとplay` libが欲しい

new Blogs.Data.Entities("name=Entities"); 
0

私のメモリから、あなたがクラスlibでモデルを作成すると、VSはlibプロジェクトにapp.configを作成します。

コンソールライブラリのapp.configでこのファイルの内容を単にマージします。

このシナリオでは、libのapp.configファイルに「デザイン」設定を、コンソールアプリケーションのapp.configに実行時設定を含めることができます。

+0

を。私がプロジェクトファイルにアクセスする必要があることを意味するapp.configをコピーする必要がある場合... – BrunoLM

+0

設定ファイルはコンパイルされません。これはアプリケーションフォルダ内のテキストファイルです。インタラクティブに設定する必要がある場合は、ObjectContextクラスのコンストラクタのオーバーロードがあると思います(ただし、間違っている可能性があります) –

0

ライブラリ(たとえばConnector)に必要な接続値(データベース、ユーザー、パスワード)を指定できるクラスを作成します。その後、コンソールアプリケーションでこのクラスを使用し、必要に応じて適切な値を入力します。

関連する問題