8

最初に EF コードを使用してアプリケーションを作成すると、次の web.config キーが追加されていることがわかります。

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

アプリケーション固有の情報が含まれていないことが簡単にわかります。これらの値を変更しても、アプリケーションの実行方法には影響しないため、おそらく設計者が必要とする、ある種の不要な EF アーティファクトに違いないと思います。ただし、このキーを完全に削除すると、アプリケーションは起動時に ConfigurationError をスローします。この鍵の本当の目的は何ですか?

4

3 に答える 3

6

参照する接続文字列:

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

Entity Framework とは関係ありません。これは、空でないすべての ASP.NET プロジェクト (WebForms/WebPages と MVC フレームワークの両方) のテンプレートの一部です。フォルダーに存在する組み込みデータベースに接続するために使用されApp_Data、SQL Server のインスタンスを必要とせずに ASP.NET プロバイダー モデルを使用できます。確信が持てない場合は、セクションのデフォルトconnectionString値を確認してください。Membership

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>
于 2012-12-30T08:41:40.910 に答える
2

アプリケーション固有の情報が含まれていないことが簡単にわかります

接続文字列から期待されるアプリケーション固有の情報は?!

この鍵の本当の目的は何ですか?

これは Visual Studio 2012 の新機能です。localdb と呼ばれます。mdf ファイルは、常にプロジェクトの app_data フォルダーにあります。開発者が開発中にバックエンドについて心配する必要がないように、開発者を容易にするために導入されています。

于 2012-12-30T04:24:10.227 に答える
1

Web または app.config からのスニペット ショーは、おそらく接続文字列エントリです。

例えば

<connectionStrings>
<add name="NameOfYourContext" connectionString="Data Source=SQLServerHost;Initial Catalog=The DBName;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework"
   providerName="System.Data.SqlClient" />

この例は、SQL サーバーの場合は SQL Express です。この違いにより、使用目的が強調されます。

つまり、開始 (http サービス) が web.config を検索するか、WPF/Console/Forms アプリケーションが App.config を検索します。

エンティティ フレームワークは、コンテキストの名前を持つ接続文字列を探します (コンストラクターまたはコンテキストを参照してください)。これが常駐

 <configuration>
      <connectionStrings>

要素を追加します。

接続文字列はいくつでも使用できます。EF と他のプロセスは、同じ接続文字列を使用できます。これはアーティファクトではありません。実際、EF は長い間確立された .net 機能を再利用しています。例 http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings.aspx

私が想定しているコンテキストは ApplicationServices と呼ばれ、これが混乱の原因となっています。または、名前は、そのようなメンバーシップ データベースを使用しているサービス機能で使用されるデフォルトの接続名です。http://msdn.microsoft.com/en-us/library/bb547119%28v=vs.100%29.aspx たとえば、構成に「ApplicationServices」の「connectionStringName」を持つセクションがある場合があります。

于 2012-12-30T05:25:02.620 に答える