Назначение элементов, для которых для параметра ConnectionStringName установлено значение LocalSqlServer?

StackOverflow https://stackoverflow.com/questions/1022489

Вопрос


1) По умолчанию элементы конфигурации имеют свои имя_строки_соединения атрибут установлен на ЛокальныйСклСервер, и, насколько мне известно, этот атрибут относится к соединению, определенному в элемент в машина.конфигурация файл.

а) Я предполагаю, что эта строка подключения относится к базе данных aspnetdb.mdf?!

б) я понимаю aspnetdb.mdf используется в тех случаях, когда мы не создаем базу данных членства или профиля вручную (путем вызова aspnet_regsql ), но я до сих пор не понимаю, для чего нужны элементы конфигурации, имеющие имя_строки_соединения атрибут установлен на ЛокальныйСклСервер набор?А именно, когда и почему им понадобится доступ к этой базе данных?

в) Что произойдет, если мы вручную установим базу данных членства через aspnet_regsql и поэтому не используйте aspnetdb.mdf?Как элементы конфигурации узнают, что мы не используем aspnetdb.mdf и вместо этого попытаться получить доступ к базе данных, которую мы создали?


2) Если бы мы хотели ЛокальныйСклСервер запись из машина.конфигурация чтобы указать на какой-то другой файл базы данных, мы могли бы сделать следующее:

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

Я понимаю, что цель <remove> element предназначен для отмены любых ранее объявленных элементов с тем же именем, но в приведенном выше примере мы просто изменили атрибут уже существующего соединения и поэтому машина.конфигурация не имеет двух соединений с одинаковым именем, так почему же нам пришлось включать <remove> элемент?


спасибо

Это было полезно?

Решение

Из Статья об элементе ConnectionStrings в MSDN:

Содержащиеся строки подключения в родительском конфигурационном файле наследуется, если ясный элемент не используется в дочернем конфигурационном файле.Следующее значение по умолчанию 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>

Поэтому, если этот раздел файла конфигурации не изменен, он автоматически получает эту строку подключения.

Другие советы

Используемое соглашение является одним из многих, которые могли быть выбраны для решения той же задачи, но люди, которые в то время были в команде ASP.NET в MS, действительно единственные, кто может сказать, «почему» этот набор соглашений был использовал.Насколько я понимаю, цель текущей конфигурации — максимально упростить начало работы новичку.то естьзапустите несколько мастеров, автоматически создайте базу данных с предварительно настроенными настройками, перетащите несколько элементов управления безопасностью, и им будет с чем работать.Поскольку это было разработано для новичков, более опытные разработчики сталкиваются с тем же набором вопросов, что и вы сейчас, потому что разобраться в том, как эти части сочетаются друг с другом, непросто.

Одна из вещей, которую вы заметите в файле Machine.config, заключается в том, что все поставщики (членство, роли, профиль и т. д.) используют это имя строки подключения LocalSqlServer, что снова поддерживает сценарий для начинающих.Поэтому, чтобы использовать собственную базу данных, вам необходимо удалить определение LocalSqlServer по умолчанию и определить свое собственное.В определении файла конфигурации нет элемента replace, поэтому вам придется использовать последовательность удаления/добавления, которая является логическим эквивалентом.Изменив строку подключения и оставив ее имя как LocalSqlServer, все поставщики в файле Machine.config будут указывать на вашу БД.Это дает вам определения поставщиков по умолчанию для вашей базы данных.

Теперь, если вы хотите настроить определения поставщиков, вы можете добавить их в свой собственный Web.config и изменить их настройки.На этом этапе вы можете оставить LocalSqlServer в качестве строки подключения для определений настраиваемого поставщика или создать собственную строку подключения, а затем указать определения настраиваемого поставщика на собственную строку подключения, и вам больше не придется беспокоиться о LocalSqlServer.Если вы удалите LocalSqlServer из вашего web.config, вам нужно будет добавить пользовательские определения поставщиков в свой собственный web.config, которые ссылаются на строку вашей базы данных.

Надеюсь это поможет,

Джо

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top