Типизированное соединение DataSet - требуется иметь его в файле .xsd? - PullRequest
5 голосов
/ 17 ноября 2008

В файле .xsd для типизированного DataSet в .NET есть раздел <Connections>, содержащий список любых подключений к данным, которые я использовал для настройки DataTables и TableAdapters.

Бывают моменты, когда я предпочитаю, чтобы их там не было. Например, иногда я предпочитаю передавать строку подключения в собственный конструктор и использовать ее, а не искать ее в настройках, .config и т. Д.

Но, похоже, если я удалю строки подключения из этого раздела (оставив его пустым) или полностью удалим раздел, инструмент генерирования кода DataSet выходит из себя. Принимая во внимание, что если я не удаляю их, DataSet взывает, когда я помещаю его в другой проект, потому что он не может найти настройки для этих строк соединения.

Можно ли как-то сказать типизированному DataSet не беспокоиться о каких-либо соединениях? (Очевидно, мне придется подключить его, если я изменю какой-либо SQL-адаптер TableAdapter или хранимые процессы, но это должно быть моей проблемой.)

Ответы [ 5 ]

2 голосов
/ 26 ноября 2008

Это меня тоже долго раздражало, и я недавно провёл некоторое тестирование. Вот что я придумал. Для записи я использую VS 2008 SP1.

  • Наборы данных будут хранить информацию строки подключения независимо от того, хотите вы этого или нет.
  • Вы можете убедиться, что наборы данных не будут хранить пароли в своих строках подключения.
  • Вы можете сохранить строку подключения в разделе «соединения» файла .xsd или сохранить его в файле app.config и сослаться на него в разделе «подключения» файла .xsd. В любом случае раздел «соединения» представляется обязательным.

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

1 голос
/ 13 мая 2009

В аналогичном случае я сохранил строку подключения для набора данных в файле настроек / app.config (поведение по умолчанию в Visual Studio при создании набора данных) со встроенной защитой для локальной базы данных разработки. Чтобы получить доступ к этому из внешних проектов, я изменил файл настроек на public вместо значения по умолчанию internal (в визуальном конструкторе). Это привело к следующему коду (в Properties \ Settings.Designer.cs):

public sealed partial class Settings
{
    [...]
    [global::System.Configuration.DefaultSettingValueAttribute
            ("Data Source=.;Initial Catalog=MyDb;Integrated Security=True;")]
    public string MyConnectionString
    {
        get
        {
            return ((string)(this["MyConnectionString"]));
        }
    }
}

Затем я вручную изменил свойство, добавив также открытый сеттер:

public string MyConnectionString
{
    get
    {
        return ((string)(this["MyConnectionString"]));
    }
    set
    {
        this["MyConnectionString"] = value;
    }
}

Наконец, я установил строку подключения из внешнего проекта, например:

MyDataAccessLibrary.Properties.Settings.Default.MyConnectionString = ...
0 голосов
/ 26 мая 2010

Чтобы ответить на ваш вопрос,

Вам не нужно указывать имя базы данных в строке подключения, чтобы заставить IDE набора данных работать. Вы ТОЛЬКО должны указать работающий СЕРВЕР.

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

<add name="MyConnectionString" connectionString="data source=.;Integrated Security=SSPI" providerName="System.Data.SqlClient" />

Это позволит вам работать с наборами данных, изменять запросы, редактировать / удалять столбцы без необходимости иметь соединение с реальной базой данных. Некоторые функции по-прежнему требуют указания базы данных, но вы сможете сделать гораздо больше, чем раньше. Дайте ему шанс.

0 голосов
/ 11 декабря 2009

Использование TableAdapterManager может работать для вас. Пожалуйста, прочитайте больше на: http://rajmsdn.wordpress.com/2009/12/09/strongly-typed-dataset-connection-string/

0 голосов
/ 13 мая 2009

Лучший способ сделать это - создать соединение во время выполнения с предпочитаемой строкой соединения и назначить ему TableAdapter.Connection. Это работало для меня в прошлом.

Во-вторых, если вы удалите секцию <connections> из xsd, она, безусловно, выдаст ошибку, потому что она не только используется во время выполнения, но также используется дизайнером наборов данных Visual Studio во время разработки для получения схемы базы данных базовая база данных, чтобы вы могли проектировать набор типизированных данных в конструкторе. Так что <connections> лучше быть там для дизайнера наборов данных! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...