7

だから話はこんな感じです。

PA.DLLというプロジェクトがあり、その中にエンティティモデル(edmx)ファイルがあります。

PA.DLLを参照している別のプロジェクトでは、edmxファイルの作成時に(自動的に)作成された接続文字列をメインアプリのapp.configにコピーしました。

ただし、次の行をロードして実行すると、次のようになります。

using (PAEntities analytix = new PAEntities())
           {
...
}

次のエラーが発生します:

System.ArgumentException: The specified default EntityContainer name 'PAEntities' could not be found in the mapping and metadata information.

誰かがこのエラーの原因を知っていますか?

これが私の接続文字列の構成方法です。

<add name="PAEntities" 
    connectionString="metadata=res://*/PAEntities.csdl|res://*/PAEntities.ssdl|res://*/PAEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=XSXSX;Initial Catalog=PA;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

ありがとう

4

2 に答える 2

7

ソリューション エクスプローラーで、Entity Data Model ファイル (.edmx) を右クリックし、[プログラムから開く] をクリックします。ファイルを開くプログラムを選択するためのダイアログ ボックスが開きます。「XML (テキスト) エディタ」を選択またはダブルクリックします。

ここで、'EntityContainer' 名を簡単に編集できる EDM ファイルの XML バージョンを見ています。

webconfig ファイルの接続文字列を変更した場合は、'DefaultContainerName' がその XML ファイルのセクション 'EntityContainer' の名前であることを確認してください。

通常、*.Designer.cs ファイルの defaultContainerName を更新しても、XML ファイルは更新されません。したがって、手動で行う必要があります。

于 2011-04-15T00:04:31.030 に答える
3

解決策の 1 つは、DLL を使用するプロジェクトの構成ファイルに接続文字列を配置することです。
もう 1 つは、接続文字列をコードで渡すことです (PAEntities のパラメーター化されたコンストラクターを使用します)。

于 2010-02-11T14:29:30.067 に答える