connectionStringNameがLocalSqlServerに設定されている要素の目的は?
-
06-07-2019 - |
質問
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に追加する必要があります。
これがお役に立てば幸いです
ジョー