8

Web プロジェクト以外のアセンブリに存在する EDMX ファイルの構成に問題があります。私のプロジェクトは次のようになります。

Project 1
--> Database.edmx
--> App.Config

Project 2
--> Ton's of .cs and .aspx files.
--> Web.Config with the proper connection string.

Visual Studio 内では、プロジェクト 1 内の .EDMX ファイルの更新はスムーズに進み、プロジェクト 2 内に .EDMX ファイルがある間、アプリケーションは想定どおりに実行されました。

プロジェクト 1 内の .EDMX ファイルを構成して、Web.Config の接続文字列を指すようにする方法を知っている人はいますか? (または、Project1.dll.config を使用して Project 1 を構成する必要がありますか?)

4

3 に答える 3

11

*.edmx ファイルがあるアセンブリ名の接続文字列を変更する必要があります。

<add name="Entities" connectionString="metadata=res://*/Models.EF.Model.csdl|res://*/Models.EF.Model.ssdl|res://*/Models.EF.Model.msl;provider=System.Data.SqlClient;provider connection ... ;" providerName="System.Data.EntityClient" />

為に

<add name="Entities" connectionString="metadata=res://Project2/Models.EF.Model.csdl|res://Project2/Models.EF.Model.ssdl|res://Project2/Models.EF.Model.msl;provider=System.Data.SqlClient;provider connection ... ;" providerName="System.Data.EntityClient" />
于 2013-01-08T11:48:35.667 に答える
4

結局のところ、2つの問題がありました。1つは、接続文字列の*を置き換えることで解決されました。

2番目の問題はここで説明されている問題でした:http://blogs.teamb.com/craigstuntz/2010/08/13/38628/

これは、Project1アセンブリ内のリソースとして.csdl、.ssdl、および.mslファイルが持っていたパスと関係がありました。

とにかく、物事は今正しく機能します

于 2013-01-08T14:18:57.343 に答える
1

より簡単な方法は、Web.Config から接続文字列を取得して App.Config にコピーし、EDMX の接続文字列を同じ DB 情報にポイントすることです。例えば

  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
    <add name="aspnetdbEntities" connectionString="metadata=res://*/Data.PSBData.csdl|res://*/Data.PSBData.ssdl|res://*/Data.PSBData.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\aspnetdb.mdf;integrated security=True;user instance=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

また、Database.edmx をプロジェクト 2 からプロジェクト 1 に移動した場合は、名前空間が正しいかどうかを確認する必要があります。これは、Database.edmx を開いて分離コードに移動することで確認できます。

于 2013-01-08T11:44:57.800 に答える