2

EFによって生成されたSQLServerExpressデータベースに接続されたASP.NETMVC4プロジェクト(Entity Frameworkを使用したCodeFirst)があり、正常に機能していました。

ただし、AppHarborにデプロイしようとしていますが、そこで実行されているSQLのバージョンがアプリに接続する際に問題が発生します。

そのため、SQL Server Compact Edition 4を使用しているサンプルプロジェクトがあることに気付きました。そのプロジェクトのweb.configファイルは次のとおりです: https://github.com/friism/CodeFirstMigrations/blob/master/Web/Web。構成

また、MicrosoftのASP.NETサイト( http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store)で、プロジェクトにSQLServerCEデータベースを含める方法についてのチュートリアルを見つけました 。 -パート4

App_DataFranchiseManagerData.sdfフォルダーにファイルを作成し、接続文字列とアプリの設定をそれらに一致するように変更することにしました。Web.configは次のようになります。

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

  <connectionStrings>
    <add name="FranchiseManagerEntities"
         connectionString="Data Source=|DataDirectory|FranchiseManagerData.sdf"
         providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

アプリケーションを実行すると、次のようなDataExceptionエラーが発生します。 The underlying provider failed on Open.

何が起こっているのかというと、アプリケーションは、EntityFrameworkによって生成された次の名前の古いデータベースをまだ探しているようです。-- FranchiseManagerTest.Models.FranchiseManagerContextEFはデータコンテキストクラスにちなんで名前を付けていました。

デバッグを停止した後に表示されるエラーは次のとおりです。

 Cannot open database "FranchiseManagerTest.Models.FranchiseManagerContext" requested by the login. The login failed.
Login failed for user 'COMPANY\UserName'.

ソリューションのクリーニングと再構築を試みました。また、binフォルダーの内容を削除して、再度クリーンな再構築を行いましたが、それでも古いデータベース接続を探しているようです。

私は何が間違っているのですか?以前のデータベースではなく、作成したローカルSQL Server CEデータベースをプロジェクトで検索するにはどうすればよいですか?

さらに詳しい情報を提供する必要がある場合は、お知らせください。

前もって感謝します。


編集

これが私のWeb.configファイルのSystem.Webセクションの一部です。

<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off"></customErrors>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
4

1 に答える 1

4

FormsAuthenticationには、デフォルトではSql CEを使用する機能がありません(私の知る限り)。EJのSQLServerCompact4.0ASP.NETメンバーシッププロバイダーを問題なく使用しました

また、SQL Server CEデータベースを正しく使用するには、EntityFramework接続を更新する必要があるようです。

アップデート

.Net 4.5の時点で、新しいSimpleMemembershipプロバイダーとUniveraslプロバイダーは素朴にSQLCEをサポートしています。

于 2012-07-10T21:16:06.350 に答える