4

昨日、PCをWindows7からWindows8に「アップグレード」したので、現在はVisual Studio 2012を使用しており、VisualStudio2010プロジェクトを開いています。

このプロジェクトは常に正常に機能しましたが、Visual Studio 2012では機能しません。奇妙なエラーが発生しましたが、修正しました。今、私はただ修正することができず、Googleで何も見つけることができないという1つのエラーが残っています:

この例外が発生します:

Database.DefaultConnectionFactoryを、アプリケーション構成で指定されている「System.Data.Entity.Infrastructure.SqlConnectionFactory、EntityFramework」タイプのインスタンスに設定できませんでした。詳細については、内部例外を参照してください。

次の内部例外がある場合:

タイプ'System.Data.Entity.Infrastructure.SqlConnectionFactory'のコンストラクターが見つかりません。

私のWeb.Configはかなり標準的に見えます:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-WebUI-201253192737;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

SqlConnectionFactoryクラスが存在し、2つのコンストラクターがあります(1つはパラメーターなし、もう1つは接続文字列を取ります)。C#コードでSqlConnectionFactoryを作成して、これをテストしました。

Entity Frameworkを削除して再インストールしましたが、問題は解決しませんでした。

SQL Server2012+ツールとIISExpressでEntityFramework5.0 RC(前述のようにVS2010で正常に機能しました)を使用しています。

4

3 に答える 3

9

問題を修正しました。私はこれを変更しました:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

に:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

そして今、それは機能します。少しばかげていますが、接続文字列をパラメータとして指定したいと思います。

これは、VS2012でエンティティフレームワークを使用して新しいMVC4プロジェクトを作成し、Web.Configファイルを比較することでわかりました。私は別の違いに気づきました。

私のEntityFrameworkアセンブリのバージョンは4.4.0.0です(ただし、NuGetから5.0 RCをインストールしました)。私が作成した新しいプロジェクトには、バージョン5.0.0.0のアセンブリがあります。誰かがそれを説明できますか?

于 2012-06-10T20:16:11.797 に答える
1

あなたがチェックできるいくつかのこと:

  • SQLExpressに接続しようとしています。SQL Expressはインストールされていますか?ウィンドウをアップグレードしたときに、インストールに何かが発生しましたか。
  • SQL Expressに接続しようとしているプログラムのセキュリティコンテキストは何ですか?ライツイシューでしょうか?

さらにいくつかのアイデアを編集します。

  • プロジェクト用に選択された.netFrameworkバージョンに関連
  • EFの参照方法に関連して、すべて参照されていますか?ローカルをコピー=true?
于 2012-06-10T10:24:28.170 に答える
-2

既存のプロジェクトでEFv4.3からEfv5.0にアップグレードする良い方法は、Nugetコマンドを使用することだと思います。

update-package EntityFramework -pre

これにより、 構成ファイルの構成セクションがEF5に更新されます。

于 2012-06-12T05:29:29.100 に答える