質問


1)デフォルトでは、構成要素の connectionStringName 属性は LocalSqlServer に設定されており、私が知る限り、この属性は machine.config ファイルの要素。

a)この接続文字列はデータベース aspnetdb.mdf を参照していると思いますか?!

b) aspnetdb.mdf は、<!>#8217; tメンバーシップまたはプロファイルデータベースを手動で作成する場合に使用されることを理解しています( aspnet_regsql を呼び出して)、しかし、<!>#8217; connectionStringName 属性が LocalSqlServer に設定されている構成要素の目的をまだ理解していませんか?つまり、いつ、なぜこのデータベースにアクセスする必要があるのでしょうか?

c) aspnet_regsql でメンバーシップデータベースを手動で設定し、<< >> 88217; t aspnetdb.mdf を使用しないとどうなりますか?構成要素は、<!>#8217; aspnetdb.mdf を使用していないことをどのようにして認識し、代わりに作成したデータベースにアクセスしようとしますか?


2) machine.config LocalSqlServer エントリが他のデータベースファイルを指すようにするには、次のようにします。

      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name=”LocalSqlServer” ...  />
      </connectionStrings>

<remove>要素の目的は、以前に宣言された同じ名前の要素をキャンセルすることですが、上記の例では、既存の接続の属性を単に変更したため、 machine.config does <!>#8217; tは同じ名前の2つの接続を持っているので、なぜ<=>要素を含める必要があるのですか?


thanx

役に立ちましたか?

解決

MSDNの connectionStrings要素の記事から

  

含まれる接続文字列   親構成ファイル内の   クリア要素が   子構成ファイルで使用されます。   次のデフォルト   connectionStrings要素は   Machine.configファイルで構成されます。   コードのコピー

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

したがって、構成ファイルのそのセクションが変更されていない場合、自動的にその接続文字列が含まれます。

他のヒント

使用される規則は、同じタスクを達成するために選択される可能性のある多くの1つですが、当時MSのASP.NETチームにいた人々は、実際に<!> quotと言うことができる唯一の人々です。なぜ<!> quot;その規則のセットが使用されました。私の理解では、現在の構成の目的は、初心者が始めるのを可能な限り簡単にすることです。つまり、いくつかのウィザードを実行し、事前設定された設定でデータベースを自動的に生成し、いくつかのセキュリティコントロールをドラッグアンドドロップすれば、それらに対処することができます。これは初心者向けに設計されているため、より経験豊富な開発者は、ピースがどのように適合するかを掘り下げるのは簡単ではないため、現在持っているのと同じ質問に遭遇します。

machine.configで気付く点の1つは、すべてのプロバイダー(メンバーシップ、ロール、プロファイルなど)がこのLocalSqlServer接続文字列名を使用していることです。これも初心者シナリオをサポートします。したがって、独自のデータベースを使用するには、LocalSqlServerのデフォルト定義を削除して独自のデータベースを定義する必要があります。構成ファイル定義にはreplace要素がないため、論理的に同等の削除/追加シーケンスを使用する必要があります。接続文字列を変更し、その名前をLocalSqlServerのままにしておくと、machine.configのすべてのプロバイダーがDBを指すようになります。これにより、データベースのデフォルトのプロバイダー定義が提供されます。

ここで、プロバイダー定義をカスタマイズする場合、独自のWeb.configに追加して設定を変更できます。その時点で、LocalSqlServerをカスタムプロバイダー定義の接続文字列として残すことも、独自の接続文字列を作成して、カスタムプロバイダー定義を独自の接続文字列に向けることもできます。これで、LocalSqlServerについて心配する必要はなくなります。 LocalSqlServerをweb.configから削除する場合、データベース文字列を参照するカスタムプロバイダー定義を独自のweb.configに追加する必要があります。

これがお役に立てば幸いです

ジョー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top