2011-12-04 35 views
0

問題が再発するがあるようです。私はそれがすべて働いている、そして、これは数日後に再び起こります。私は、現在失敗しているエンティティフレームワークやデータベースに触れるために何かをしなかった。エンティティedmxのインスタンス化は機能していますが、データベースへのクエリを実行しようとすると次のメッセージが表示されます。私が解決した方法は、データベースを削除し、SQL MGMT Studioをクリアし、それらをもう一度追加してedmxファイルを復元することです。ASP.Net Linq to Entity:基盤プロバイダーがオープンに失敗しました

私は2つのプロジェクトを持っています:私のエンティティフレームワーク定義が存在するDataLayer、ビジネスロジックとUI。私は、私のDataLayerとUIの間にweb.configの間にいくつかの違いがあり、それが問題かどうかわからないことに気付きました。データベースがDataLayerのApp_Dataフォルダに追加されました。このソリューションは、UIのAppDataフォルダにデータベースのコピーを追加し続け、サーバーエクスプローラのファイル名に数多くの拡張子を追加します(BLではファイル名はFCGuide.mdf、UIはアンインストールされましたFCGuide.mdf0 - それを理解していない)。

今日、私はプロジェクトとSQL SErver Management Studioからデータベースを削除し、解決せずに再度追加しようとしました。私はweb.configを提供していますが、トラブルシューティングの助けに必要なものは何もわかりません。前もって感謝します。 UIから

web.configファイル:DataLayerから

<?xml version="1.0"?> 

<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 

<configuration> 
    <appSettings> 
     <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" /> 
    </appSettings> 
    <system.webServer> 
     <handlers> 
      <remove name="ChartImageHandler" /> 
      <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" 
       path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </handlers> 
    </system.webServer> 
    <system.web> 
     <authorization> 
      <allow roles="ADMIN" /> 
      <allow roles="MEMBER" /> 
      <allow roles="GUEST" /> 
      <allow roles="RESTAURANT" /> 
      <allow users="admin" /> 
      <allow roles="MEMBER" /> 
      <allow roles="GUEST" /> 
      <allow roles="GUEST" /> 
      <allow roles="ADMIN" /> 
      <allow users="admin" /> 
     </authorization> 
     <roleManager enabled="true" /> 
     <authentication mode="Forms" /> 
     <httpHandlers> 
      <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
       validate="false" /> 
     </httpHandlers> 
     <pages> 
      <controls> 
       <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" 
        assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
      </controls> 
     </pages> 
     <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <connectionStrings> 
    <add name="FCGuideEntities" connectionString="metadata=res://*/FCGuide.csdl|res://*/FCGuide.ssdl|res://*/FCGuide.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;attachdbfilename=|DataDirectory|\FCGuide.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

のWeb設定ファイル:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
    <connectionStrings> 
    <add name="FCGuideEntities" connectionString="metadata=res://*/FCGuide.csdl|res://*/FCGuide.ssdl|res://*/FCGuide.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;attachdbfilename=|DataDirectory|\FCGuide.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+0

どのようなエラーが表示されますか? (少なくとも、タイプとメッセージが必要です)失敗したデータアクセスコードとは何ですか? – Richard

+0

エラー:ユーザーコードによってエンティティ例外が処理されませんでした。基礎となるプロバイダがOpenで失敗しました。 – Susan

+0

linqクエリは次のとおりです。var restList =(db.RESTAURANTs.Include( "CUISINE")のRESTAURANTから) (RESTAURANT.REST_ID == restID select RESTAURANT).ToList(); – Susan

答えて

0

"基になるプロバイダーのオープンに失敗しました":これは、接続を意味stringはADO.NETがデータベースを開くことを許可しませんでした。

ので、プロバイダの接続文字列:

data source=.;attachdbfilename=|DataDirectory|\FCGuide.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework 

は、いくつかの作業を必要とします。その文字列でSQL Connectionを使用するテストページを作成すると、簡単なクエリを開いて実行できますか?

(すなわち、可能な限り可動部分を少なくする)。

+0

これはなぜ時には動作するのかを説明するのに役立ちますか? – Susan

+0

@Susanおそらく、根本的な問題によって。 – Richard

+0

私はweb.configファイルでファイルを比較しました。私の最後のバージョンと現在のバージョン(失敗したもの)が同じです。それはweb.configの問題だとは思われません。 – Susan

関連する問題