Frage


1) Standardmäßig Konfigurationselemente haben ihre ConnectionStringName Attribut festgelegt auf LocalsQlServer, und soweit ich weiß, bezieht sich dieses Attribut auf die Verbindung, die in der definiert ist Element in machine.config Datei.

a) Ich gehe davon aus, dass diese Verbindungszeichenfolge sich auf die Datenbank bezieht ASPNETDB.MDF?!

b) Ich verstehe ASPNETDB.MDF wird in Fällen verwendet aspnet_regsql ), aber ich verstehe immer noch nicht den Zweck von Konfigurationselementen mit ConnectionStringName Attribut festgelegt auf LocalsQlServer einstellen? Wann und warum müssten sie auf diese Datenbank zugreifen?

c) Was passiert, wenn wir die Mitgliedsdatenbank manuell durch aspnet_regsql und benutze also nicht ASPNETDB.MDF? Woher wissen Konfigurationselemente, dass wir nicht verwenden? ASPNETDB.MDF Und versuchen Sie also stattdessen, auf Datenbank zuzugreifen, die wir erstellt haben?


2) Wenn wir wollten LocalsQlServer Eintrag von machine.config Um auf eine andere Datenbankdatei zu verweisen, können wir Folgendes tun:

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

Ich verstehe, dass der Zweck von <remove> Das Element besteht darin, alle zuvor deklarierten Elemente mit demselben Namen abzubrechen, aber im obigen Beispiel haben wir einfach das Attribut der bereits vorhandenen Verbindung geändert und als solche machine.config Hat keine zwei Verbindungen mit demselben Namen, warum mussten wir also einbeziehen <remove> Element?


Danke

War es hilfreich?

Lösung

Von dem ConnectionStrings -Elementartikel auf MSDN:

Verbindungszeichenfolgen, die in einer übergeordneten Konfigurationsdatei enthalten sind, werden vererbt, es sei denn, das klare Element wird in der untergeordneten Konfigurationsdatei verwendet. Das folgende Standard -ConnectionStrings -Element ist in der Datei machine.config konfiguriert. Code kopieren

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

Wenn dieser Abschnitt der Konfigurationsdatei nicht geändert wird, hat er automatisch diese Verbindungszeichenfolge.

Andere Tipps

Die verwendete Konvention ist eine von vielen, die ausgewählt werden können, um dieselbe Aufgabe zu erfüllen, aber die Leute, die zu dieser Zeit im ASP.NET -Team bei MS waren Gebraucht. Mein Verständnis ist, dass der Zweck der aktuellen Konfiguration darin besteht, es einem Anfänger so einfach wie möglich zu machen. IE Führen Sie einige Assistenten aus, generieren automatisch Datenbank mit vorkonfigurierten Einstellungen, Drag-N-Drop ein paar Sicherheitskontrollen und sie haben etwas zu arbeiten. Da dies für Anfänger konzipiert wurde, treffen erfahrene Entwickler auf die gleichen Fragen, die Sie jetzt haben, weil Sie sich in die Zusammenhänge der Teile nicht einfach eingraben.

Eines der Dinge, die Sie in machine bemerken.config, ist, dass alle Anbieter (Mitgliedschaft, Rollen, Profil usw.) diesen Namen für die Anbieter von Lokalen verwenden, die erneut das Anfängerszenario unterstützt. Um Ihre eigene Datenbank zu verwenden, müssen Sie daher die Standarddefinition von LocalsQlServer entfernen und Ihre eigenen definieren. In der Definition der Konfigurationsdatei gibt es kein Ersatzelement, sodass Sie die logische Äquivalent entfernen/hinzufügen müssen. Durch Ändern der Verbindungszeichenfolge und den Namen als LocalSQLServer werden alle Anbieter in machine.config auf Ihre DB gerichtet. Dies gibt Ihnen die Standardanbieterdefinitionen für Ihre Datenbank.

Wenn Sie nun die Anbieterdefinitionen anpassen möchten, können Sie sie zu Ihrem eigenen Web.config hinzufügen und deren Einstellungen ändern. Zu diesem Zeitpunkt können Sie LocalsQlServer als Verbindungszeichenfolge für die benutzerdefinierten Anbieterdefinitionen oder Ihre eigene Konnektionszeichenfolge erstellen und dann Ihre benutzerdefinierten Anbieterdefinitionen in Ihrer eigenen Verbindungszeichenfolge aufzeigen, und Sie müssen sich keine Sorgen um LocalsQlServer mehr machen. Wenn Sie LocalsQlServer von Ihnen web.config entfernen, müssen Sie Ihrem eigenen Web.config benutzerdefinierte Anbieterdefinitionen hinzufügen, die auf Ihre Datenbankzeichenfolge verweisen.

Hoffe das hilft,

Joe

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top