2

次の接続文字列ですべてが正常に機能します。

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

最近、ローカルマシンにSQL Server 2012 Expressをインストールしてテストしましたが、接続できません。これが、Windows認証を使用した接続文字列です。

<add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

私はフォーラムを検索するために最善を尽くした完全な初心者ですが、「同様のタイトルの質問」セクションから私の解決策を延期することはできません。どんな助けでも大歓迎です。

4

3 に答える 3

10

EntityFramework コードは、最初に app.config ファイルまたは web.config ファイルで defaultConnectionFactory を使用し、.\SQLEXPRESS に自動的に接続します。この構成は次のようになります。

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

EF Code First を使用している場合は、DbContext から派生したクラスをコンテキストとして使用する可能性があります。設計上、EntityFramework は、コンテキスト クラスと同じ名前の接続文字列を探し、defaultConnectionFactory の代わりにその名前を使用します。これは私がそれを使用している方法です:

<connectionStrings>
    <add name="ObjectContext" 
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=My.Db.Name; Integrated Security=True; MultipleActiveResultSets=True"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

私が提案しているのは、EFがdefaultConnectionFactoryを使用していないことを確認し、コンテキストにちなんで名付けられた接続文字列を追加して強制的にオーバーライドすることです。また、EF 構成ファイルについて詳しく説明しているこのブログ記事も確認してください。

于 2012-08-01T12:56:37.910 に答える
0

これは私のために働いた

add name="MovieDBContext" connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=Movies;
Integrated Security="True" providerName="System.Data.SqlClient"

私はこのチュートリアルに取り組んでいて、それを解決しなければなりませんでした。MovieDBContext は、mvc アプリケーションのモデルのコードで作成されます

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

これにより、コントローラー クラスを作成する IDE が自動化されますが、web.config ファイルで接続文字列を正しく取得するまで機能しません。

于 2013-04-10T19:12:39.820 に答える
0

接続のこの部分は正しいですか? "データソース=.\SQLEXPRESS [名前] ;

SQL Server 2012 を使用したことはありませんが、[Name] テキストを削除してみてください。

于 2012-04-27T12:36:40.260 に答える