4 февраля 2011 г.

Как работать с таблицами БД из C#

Создайте таблицу в SQL Server. Откройте sql server management studio. В Object Explorer правой кнопкой на папке Tables - New Table. Откроется окно редактирования полей таблицы.

Если нет особых требований по типам данных, то для числовых используйте тип int, а для строковых nvarchar(N), где N - максимальное количество символов. Максимально N может быть равно 4000. Также можно указывать nvarchar(MAX).


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

У каждой таблицы хотя бы одно поле должно быть помечено как первичный ключ. Первичный ключ позволяет однозначно определить строку в таблице, поэтому его значения не могут повторяться. В качестве такого ключа выбирается отдельный столбец с типом int или с типом uniqueidentifier. Критерии выбора можно посмотреть в этой заметке. Первичный ключ отмечается пиктограммой в виде золотого ключа.

После указания первичного ключа сохраните структуру таблицы (Ctrl+S), здесь вам будет предложено ввести название для неё.

В Visual Studio добавьте в свой проект Add - new item - LINQ to SQL classes. Откроется пока ещё пустая диаграмма с расширением dbml. Если диаграмма dbml будет называться NordmineDatabase, то соответствующий ей класс автоматически получит название NordmineDatabaseDataContext - имейте это в виду, когда будете придумывать ей имя.


Откройте окно server explorer. В нём нужно добавить вашу таблицу. Выберите data connections - add connection. Там нажмите кнопку refresh и выберите из выпадающего списка имя компьютера, на котором установлен sql server. После нажатия на ОК в окне server explorer появится древовидная структура всех элементов вашей БД. Выберите нужную таблицу и просто перетащите её на диаграмму dbml. Нажмите F5 (запуск) или F6 (компиляция без запуска), чтобы последние изменения в диаграмме стали доступны.


Теперь вы можете работать с этой таблицей при помощи linq из любого метода. Пример:
NordmineDatabaseDataContext context = new NordmineDatabaseDataContext();
List<Sale> Sales = (from s in context.Sales select s).ToList();
Здесь из таблицы sales выбираются все строки. На выходе получаем коллекцию из элементов Sale. При этом объект context.Sales и класс Sale со всеми членами были созданы автоматически.

Здесь из таблицы sales выбираются все строки. На выходе получаем коллекцию из элементов Sale. При этом объект context.Sales и класс Sale со всеми членами были созданы автоматически.

4 комментария:

  1. Спасибо! Долго искал рабоче-крестьянское объяснение как работать с бд с помощью linq. Очень помогло.

    ОтветитьУдалить
    Ответы
    1. Не за что) Если у вас возникнут другие вопросы по данной теме - задавайте. Постараюсь помочь.

      Удалить
  2. Подскажи пожалуйста, как получить и использовать таблицу полученную запросом select из хранимой процедуры?

    ОтветитьУдалить
  3. Не очень понял вопрос, но с хранимыми процедурами работа происходит аналогичным образом: просто перетаскиваете её из окна базы данных и тогда с ней можно работать как с обычным методом. Доступ к ней будет также через context.

    ОтветитьУдалить