Как изменить строку подключения в data set visual studio

Обновлено: 06.07.2024

При работе с Entity Framework во всех предыдущих примерах мы полагались на соглашения Code-First по автоматическому определению подключения к базе данных. По умолчанию, Code-First создает базу данных на локальном сервере .\SQLEXPRESS, используя полное имя класса контекста для имени базы данных (например, пространство имен + имя класса). Для примера нашего проекта это означает, что Code-First создаст базу данных с именем CodeFirst.SampleContext. Зачастую это поведение необходимо переопределить, в частности мы передавали имя базы данных MyShop в конструкторе класса контекста. В этой статье содержится подробное описание настроек имени базы данных и подключения к ней.

Использование конфигурационного файла приложения

Самым простым способом управления подключением к базе данных является использование конфигурационного файла приложения. В файле конфигурации можно переопределить базовые соглашения Code-First и точно указать строку подключения к базе данных. Этот подход особенно полезен, если вы хотите изменить строку подключения в вашем контексте, чтобы указать подключение к удаленной (не локальной) базе данных при развертывании приложения.

Благодаря такому подходу обеспечивается возможность многоразового использования модели данных. В каждом проекте, где мы ссылаемся на проект CodeFirst, мы можем указать свою строку подключения, т.е. одна модель будет работать с разными базами данных.

Для указания строки подключения используется раздел конфигурации connectionString. По умолчанию, строка подключения должна иметь то же имя, что и файл контекста, при этом можно указать как полное имя так и краткое (т.е SampleContext или CodeFirst.SampleContext). Благодаря этому, Entity Framework автоматически найдет нужную строку подключения в файле конфигурации и использует ее. В примере ниже показано определение строки подключения:

Запустите этот пример и убедитесь, что Code-First создаст новую базу данных с именем MyShop2 для текущей модели. Если вы прорабатывали примеры из предыдущих статей, то пока удалите вызов конструктора базового класса из класса контекста. В результате будет создана следующая база данных:

Настройка подключения из конфигурационного файла

Настройка подключения в конструкторе класса контекста

Выше вы видели, как задать строку подключения из файла конфигурации так, что контекст будет использовать ее автоматически благодаря соглашениям Code-First. Теперь давайте посмотрим на некоторые способы управления подключением к базе данных из кода.

Класс DbContext помимо конструктора по умолчанию включает в себя несколько перегруженных версий конструкторов. Если вы используете один из этих конструкторов, Code-First не будет использовать соглашения для автоматического поиска строки подключения. Самая простая версия конструктора класса DbContext принимает один строковый параметр. Давайте посмотрим как использовать этот конструктор из производного класса:

В этом конструкторе передается либо имя базы данных, либо полностью определенная строка подключения. Entity Framework достаточно интеллектуален, чтобы различить просто имя и строку подключения, в данном примере мы указываем имя базы данных.

Обратите внимание, что в этом примере мы вызываем перегруженный конструктор класса DbContext из конструктора по умолчанию производного класса SampleContext. При таком подходе к проектированию, когда вы создаете объект контекста в вашем приложении, строка подключения будет автоматически выбираться из конструктора по умолчанию класса SampleContext. Иногда бывает необходимо указать строку подключения при создании объекта контекста. Для этого можно добавить перегруженный конструктор в класс контекста с вызовом перегруженного конструктора DbContext:

Теперь в коде работы с данными, при создании объекта класса контекста вы можете указывать имя базы данных или строку подключения:

В этом примере извлекаются данные всех покупателей из таблицы Customers базы данных MyShop2, т.к. мы указали полную строку подключения к этой базе данных. Если в данном примере вы создадите объект контекста с использованием конструктора по умолчанию:

то Code-First использует соглашения по автоматическому поиску строки подключения, и, если не найдет строку подключения с именем SampleContext или CodeFirst.SampleContext, то попытается подключиться к базе данных с именем CodeFirst.SampleContext.

У вас также может возникнуть вопрос, как явно передать конструктору класса контекста имя строки подключения, если оно не соответствует имени класса контекста. Для этого можно использовать укороченную строку подключения с единственным параметром name:

Теперь Code-First будет искать в конфигурационном файле строку подключения с именем MyConnectionStringName.

Повторное использование подключения к базе данных

В этом примере мы создали класс DbConnectionToMyShop, для подключения к базе данных MyShop. Объект этого класса передается в конструкторе по умолчанию класса контекста. Мы также создали для удобства перегруженный конструктор - в коде приложения вы можете просто передать нужный объект подключения. Классы подключений можно определить в одном файле и затем использовать повсеместно в приложении. Второй параметр в этом конструкторе contextOwnsConnection указывает, нужно ли очищать объект подключения при удалении объекта контекста.

Настройка соглашений подключения в Code-First

Последним способом управления подключением к базе данных, является замена соглашений, которые использует Code-First. Соглашения по конфигурации подключения определяются с помощью интерфейса IDbConnectionFactory. Вы можете реализовать этот интерфейс и передать его методу SetDefaultConnectionFactory() класса DbConfiguration, переопределив тем самым соглашения по умолчанию Code-First.

Соглашения по умолчанию реализует класс SqlConnectionFactory из пространства имен System.Data.Entity.Infrastructure. Поведение по умолчанию определяет, что поставщиком базы данных будет поставщик SQL Server (сборка System.Data.SqlClient), имя сервера - .\SQLEXPRESS, а для доступа к серверу используется Windows-аутентификация (сервер доступен для текущего пользователя системы). Вы можете переопределить данные соглашения, например, для того, чтобы явно указать Entity Framework что вы хотите работать с поставщиком MySQL.

В примере ниже показано, как переопределить эти соглашения, используя класс конфигурации, унаследованный от DbConfiguration:

В этом примере мы изменяем имя сервера, а также указываем, что для доступа к серверу должна использоваться SQL-аутентификация, на основе имени пользователя и пароля. Обратите внимание, чтобы указать классу контекста, чтобы он использовал эту конфигурацию, используется атрибут DbConfigurationType. Чтобы зарегистрировать новый класс конфигурации, в файле Web.config веб-приложения нужно удалить раздел defaultConnectionFactory:

Также вы можете установить конфигурацию для всех классов контекста в приложении и не использовать атрибут DbConfigurationType. Для этого укажите свойство codeConfigurationType раздела конфигурации entityFramework:

Здесь указывается ссылка на класс конфигурации и имя сборки, где этот класс располагается. Для настройки поставщика базы данных вы можете использовать метод SetProviderServices() класса конфигурации или использовать элементы provider разделе entityFramework файла конфигурации:

В примерах выше показано использование стандартного поставщика данных SQL Server, но вы можете указать другие поставщики баз данных, которые требуются в вашем приложении (MySQL, Oracle и т.п.)

строки подключения в Visual Studio приложениях сохраняются в файле конфигурации приложения (также называемом параметрами приложения) или жестко запрограммированы непосредственно в приложении. Сохранение строк подключения в файле конфигурации приложения упрощает процесс обслуживания приложения. Если строку подключения необходимо изменить, вы можете обновить ее в файле параметров приложения (сравните это с ее изменением в исходном коде и повторной компиляцией приложения).

Хранение конфиденциальных сведений (например, пароля) в строке подключения может повлиять на безопасность приложений. Строки подключения, сохраненные в файле конфигурации приложения, не шифруются и не скрываются, поэтому другой человек может получить доступ к файлу и просмотреть его содержимое. Использование встроенных средств безопасности Windows — более безопасный способ управления доступом к базе данных.

Если вы решили не использовать встроенные средства безопасности Windows и ваша база данных требует имя пользователя и пароль, вы можете опустить их в строке подключения, однако ваше приложение должно предоставлять эти данные для успешного подключения к базе данных. Например, вы можете создать диалоговое окно, которое запрашивает эти сведения у пользователя и динамически формирует строку подключения во время выполнения. При этом все равно может возникнуть угроза безопасности, если эта информация будет перехвачена при передаче в базу данных. Дополнительные сведения см. в разделе Защита сведений о соединении.

Сохранение строки подключения в мастере настройки источника данных

В мастере настройки источника данных выберите параметр сохранения соединения на странице Сохранение строки подключения в файле конфигурации приложения .

Сохранение строки подключения прямо в параметрах приложения

Изменение строк подключения, хранящихся в параметрах приложения

Вы можете изменить информацию о подключении, сохраненную в параметрах приложения, с помощью Конструктора проектов.

Порядок изменения строки подключения, сохраненной в параметрах приложения

Изменение строк подключения для наборов данных

Сведения о соединении для каждого адаптера таблицы TableAdapter можно изменить в наборе данных.

Изменение строки подключения для TableAdapter в наборе данных

  1. В Обозреватель решений дважды щелкните набор данных (XSD -файл) с подключением, которое требуется изменить.
  2. Выберите TableAdapter или запрос, имеющий подключение, которое нужно изменить.
  3. В окне Свойства разверните узел подключение.
  4. Чтобы быстро изменить строку подключения, измените свойство ConnectionString или щелкните стрелку вниз в свойстве соединения и выберите создать соединение.

Безопасность

Хранение конфиденциальных сведений (например, пароля) в строке подключения может повлиять на безопасность приложений. Использование встроенных средств безопасности Windows — более безопасный способ управления доступом к базе данных. Дополнительные сведения см. в разделе Защита сведений о соединении.

Строки подключения, хранящиеся в приложении, сохраняются в файле конфигурации приложения (параметров приложения) или компилируются в код (как правило, в качестве свойства ConnectionStringобъекта подключения). Подключения к данным, созданные с помощью мастераМастер конфигурации источников данных, дают возможность хранения строк подключения в файле параметров приложения или жестко кодировать их в определении набора данных.


Изменение строки подключения, сохраненной в параметрах приложения. Можно изменить сведения о подключении, сохраненные в параметрах приложения, с помощьюКонструктора проектов.

Для изменения строки подключения, сохраненной в параметрах приложения:

Выберите вкладку Параметры.

Найдите подключение, которое требуется отредактировать, и выделите текст в поле Значение.

Измените строку подключения в поле Значение.

Редактирование жестко закодированных строк подключения

Можно изменить сведения о подключении, сохраненном в коде, с помощью Конструктора наборов данных.

Чтобы изменить строку соединения, хранящуюся в коде:

В Обозревателе решенийдважды щелкните набор данных (XSD- файл) с подключением, которое требуется изменить.

Выберите TableAdapterили запрос с подключением, которое требуется изменить.

В окне Свойстваразверните узелDefaultConnection.

Чтобы быстро изменить строку подключения, измените свойство ConnectionString.

Щелкните стрелку, направленную вниз, на свойстве DefaultConnectionи выберитеНовое подключение, чтобы открыть диалоговое окноДиалоговое окно "Добавить/Изменить подключение" (вкладка "Общие").

Чтобы сохранить строку подключения непосредственно в параметры приложения:

Выберите вкладку Параметры.

Введите Имядля строки подключения. Ссылайтесь на это имя при доступе к строке подключения в коде.

Установите Типна значение (Строка подключения).

Оставьте свойство Областьустановленным на значениеПриложение.

Введите строку подключения в поле Значение.

Открытие и закрытие подключений

Двумя основными способами подключений являются OpenиClose. В методе Open используются сведения свойства ConnectionString для связи с источником данных и установки открытого подключения. Метод Close завершает подключение. Закрытие подключений необходимо, поскольку большинство источников данных поддерживают только ограниченное число открытых подключений и на открытые подключения отвлекаются ценные системные ресурсы.

При работе с Адаптером таблицы, DataAdapterили командами данных нет необходимости явно открывать и закрывать подключение. При вызове метода этих объектов (например, Fill или Update), метод проверяет наличие уже открытого подключения. Если подключение не открыто, адаптер открывает его, выполняет свои операции и вновь закрывает.

Методы, подобные методу Fill, открывают и закрывают подключение автоматически только в том случае, если оно еще не открыто. Если подключение открыто, методы используют его, но не закрывают. Это позволяет пользователю самостоятельно открывать или закрывать подключения. Это также можно делать, если имеется несколько адаптеров данных, которые совместно используют подключение. В этом случае открывать и закрывать подключение из каждого адаптера при вызове метода Fill было бы неэффективно. Вместо этого пользователь может открыть подключение, вызвать методы Fill для каждого адаптера, а затем закрыть подключение после завершения работы.

Oracle DataBase на моем компьютере - отлично работает.

Когда я установил на клиентский компьютер (который подключается к его базе данных Oracle) -

Мне нужно изменить строку подключения в файле DataSet.xsd , но как это сделать?

Есть ли файл xml? Или файл конфигурации?

ОТВЕТЫ

Ответ 1

При создании DataSet с помощью Мастера вам предлагается создать и сохранить ConnectionString. Взгляните в App.Config

Ответ 2

Вы также можете открыть набор данных и выбрать TableAdapter, который вы хотите обновить, щелкнуть правой кнопкой мыши и перейти к свойствам.

здесь вы увидите свойство "connection", которое вы можете легко изменить на настройки в файле web.config или ввести новые сведения о подключении.

Ответ 3

У меня была схожая ситуация. Я уже создал множество наборов данных, и каждый из них записал свою собственную строку соединения в коде. А также вручную взаимодействовал с базой данных через строку подключения, которую я поместил в файл App.config. Поэтому для обновления всего этого при развертывании на неизвестном сервере будет боль; но ручное изменение всех этих соединительных строчек также меня отключает. В итоге я добавил таблицу адаптера test на страницу дизайна .xsd. и создал новую строку подключения - на этот раз, указав ее в файле App.config. Затем по волшебству. все tableAdapters теперь использовали эту единственную строку соединения - просто удалите тестовый объект и вуаля!

Ответ 4

Вы можете использовать как мой код: Обратите внимание, что DataSet может изменять строку подключения app.config, но вы можете изменить строку соединения с помощью TableAdapter, как показано ниже:

Ответ 5

Просто запросите учетные данные сервера при запуске приложения один раз или используйте окно настроек и используйте этот метод:

получить строку соединения из объекта SqlConnection или сформировать строку подключения из отдельных данных и сделать это следующим образом:

Также могут быть установлены параметры приложения, которые представляют собой приложение, а не область пользователя. Но только программно, по коду. Он отлично работает для меня. Надеюсь, вам это поможет!

Ответ 6

введите описание изображения здесь

Для WinForm это очень просто. см. ниже рисунок

Ответ 7

Если ваш набор данных создан, выберите значок ниже столбцов, которые вы выбрали для показа. Он заканчивается TableAdapter, перейдите к свойствам. он показывает текущую строку соединения, просто измените ее.

Like this image

Ответ 8

Я искал способ изменить connectionsString глобально, и, наконец, я нашел способ сделать это. Откройте dataset.xsd, используя программу "Блокнот", а затем замените старую строку соединения на новую.

Ответ 9

Строка подключения иногда хранится в настройках приложения (не веб-проекты: формы выигрыша, библиотеки. ). Щелкните правой кнопкой мыши проект > Свойствa > Настройки. Затем вы можете изменить строку подключения.

Читайте также: