2016-07-29 9 views
2

それぞれのEFエンティティデータモデルが同じデータベースを指している3つのプロジェクトがあります。これらのプロジェクトのapp.configファイルのそれぞれに接続文字列を保存したくありません私のモデル間で共有したいと思っています。複数のエンティティフレームワークモデルを持つ単一接続文字列(データ優先)

私はこのリンクを参照してくださいstackoverflow How to share a connection string between multiple entity data model

しかし、私がEFモデルを更新すると、EFモデルのコンテキストでコードを上書きし、BaseContextからではなくDbContextから継承するという問題があります。

どうすれば解決できますか。あなたが別の設定ファイルに接続文字列を移動する必要が

+0

EFによって生成されるクラスは部分的です。生成されたコンストラクタと "ヘルパー"コードを、生成されたコンストラクタを拡張する別のファイルに入れてください。このようにして、カスタムコードを上書きするEFについて心配する必要はありません。 – Xeun

+0

@ Xeun:すぐにお返事いただきありがとうございます.Net Framework 4.5でサンプルを実行しようとすると、警告が表示されます。 警告\t CS0618 \t 'データベース。DefaultConnectionFactory 'は時代遅れです:'デフォルトの接続ファクトリは、設定ファイルまたはDbConfigurationクラスを使用して設定する必要があります。 (http://go.microsoft.com/fwlink/?LinkId=260883) ' リンクhttp://stackoverflow.com/questions/10266923/how-toと同じアプローチを使用することは良いことです-share-a-connection-string-between-multiple-entity-data-modelを使用するか、より良い方法があります。 – ChupChapCharli

+0

私は答えの中であなたが提示したソリューションの巨大なファンではありません。あなたのケースでは、それは時代遅れの接続ファクトリです。私はあなたにコード例を示します。私は答えを書くでしょう – Xeun

答えて

0

MVCプロジェクトから常に選択された接続文字列として解決され、他のすべてのクラスライブラリプロジェクトは自動的にそれを参照しています。

0

ConnectionStrings.config

<?xml version="1.0" encoding="utf-8" ?> 
<connectionStrings> 
    <add name="connectionString" 
     connectionString="Integrated Security=SSPI; Persist Security Info=False; Initial Catalog=DbName; Data Source=.\SQLExpress;" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

それはあなたの条件に合うように、接続文字列を変更します。

次にあなたがそのようなすべてのプロジェクトとそれを共有することができます。

1)あなたのApp.configファイルをプロジェクトで見つかった(このファイルを開きます)

2)どこか</configSections>

の背後に、この行のコードを追加します。 configSourceで
... 
<connectionStrings configSource="ConnectionStrings.config"/> 
... 

トリック:

「に関連する構成のインクルードファイルの名前を取得または設定しsectioそのようなファイルが存在する場合、nが定義されます。 https://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource(v=vs.110).aspx

が起こっただろう何:

  • をConnectionStrings.configが最初にコピーする必要があり

  • すべてYourApplicationName.configは、共有接続文字列の設定ファイルを参照します。

プロジェクトにApp.configがない場合は、追加してください。また、ConfigurationSettingsを使用して手動で読み込むこともできます。

これは、app.configs間でデータベース構成を共有し、たとえばSql Server名を変更するときに、ConnectionStrings.configを変更するだけで、すべてのApp.configsを変更する必要はありません。

+0

返信ありがとう、私のプロジェクトConnectionStrings.config ファイルは、共通のDALプロジェクトにあり、各EFデータモデルごとに異なるプロジェクトにあります。では、app.configファイル内のファイルのパスはどうなりますか。提案してください。エラーが表示されます: 追加情報:アプリケーション設定ファイルに「ABC_Entity」という名前の接続文字列が見つかりませんでした。 – ChupChapCharli

+0

すべての作業が成功したという概念のために、ConnectionStrings.configを任意のパスに置き、手動でbin \ ReleaseディレクトリまたはDebugディレクトリにコピーするだけです。あなたがそれが動作していると確信している場合は、ConnectionString.configをインフラストラクチャにassebmlyを追加し、[Properies]ウィンドウで[Copy To OutPut Directory]を選択します。常にコピーするか、それをルートに入れて試してみてください。\ .. \ ... - >この参照がどのように機能するのかわかりませんが、試してみる必要があります。 –

+0

@ Bassam:私が得た問題は理由によるものです:http://stackoverflow.com/questions/12622408/no-connection-string-named-myentities-could-be-found-in-the-application-config しかし、私がそれをした後でさえ、私のプロジェクトのapp.configファイルから接続文字列を取り除いた後でも、Webプロジェクトから接続文字列を選んでいます。だから私の問題を解決したか、いくつかの問題がありますか?提案してください。 – ChupChapCharli

関連する問題