0

はい、プロバイダー マニフェスト トークンに関するもう 1 つの質問です。残念ながら、以前の 22 の質問はすべて、私の問題を解決するのに役立ちませんでした。MVC4 + Code First + Sql Express を使用して単純な Web アプリケーションを開発しています。

これが私のコンテキストの子孫です:

public class MCQContext : DbContext
{
    public MCQContext()
        : base("name=ApplicationConnection")
    {

    }
    ...............
}

そしてここ - 問題に関連する web.config の一部:

<configuration>
  <configSections>
    <section name="entityFramework"
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
             requirePermission="false" />
  </configSections>

  <connectionStrings>
    <add name="ApplicationConnection"
         connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="name=ApplicationConnection" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

したがって、ご覧のとおり、正しい接続文字列がコンテキスト クラスのベースに渡されます (接続文字列の名前を「MCQContext」に変更し、親コンテキスト クラスに何も渡さないと、同じエラーが発生します)。

修正方法がわかりません。完全に空の MVC4 アプリケーションを作成し、すべてのパッケージを削除し (必要なアセンブリを手動で指定し、NuGet を使用しないことをお勧めします)、参照を修正すると (sqlserver Express への参照を含む)、この動作が再現されます。

4

1 に答える 1

0

ここでの接続文字列の問題は次のとおりです。

<add name="TrempimModel"
 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                   AttachDBFilename=|DataDirectory|aspnetdb.sdf;
                   User Instance=true"
 providerName="System.Data.SqlClient" />

基本的に、接続先の「サーバー」を定義していますが、ファイル内のどのデータベースに接続するかは言っていません。また、SQL Server Express データベース ファイルのファイル拡張子は .mdf (.sdf ではなく、SQL Server Compact Edition です) です。これも考慮する必要があります。(OPのコメントによると、タイプミスでした)。

接続文字列に追加の database=.... (または Initial Catalog=.....) を定義する必要があります。

 <add name="TrempimModel"
 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                   database=YourDatabaseName;
                   AttachDBFilename=|DataDirectory|aspnetdb.mdf;
                   User Instance=true"
 providerName="System.Data.SqlClient" />

その後、問題なく動作するはずです。

于 2015-06-14T12:23:19.630 に答える