Пошаговое руководство. Создание классов LINQ to SQL с помощью наследования одной таблицы (конструктор O/R)

Средства LINQ to SQL в Visual Studio поддерживают одно табличное наследование, так как оно обычно реализуется в реляционных системах. В этом пошаговом руководстве рассматриваются общие действия, описанные в разделе "Практическое руководство. Настройка наследования с помощью раздела конструктора O/R" и предоставление некоторых реальных данных для демонстрации использования наследования в конструкторе O/R.

В этом пошаговом руководстве выполняются следующие задачи:

  • Создайте таблицу базы данных и добавьте в нее данные.

  • Создайте приложение Windows Forms.

  • Добавьте в проект LINQ to SQL-файл.

  • Создайте новые классы сущностей.

  • Конфигурируйте классы сущностей на использование наследования.

  • Выполните запрос унаследованного класса.

  • Отобразите данные на Windows Forms

Создание таблицы для наследования

Чтобы узнать, как работает наследование, создайте небольшую Person таблицу, используйте ее в качестве базового класса, а затем создадите объект, наследуемый Employee от него.

Для создания базовой таблицы, чтобы продемонстрировать наследование

  1. В Обозреватель сервера или базе данных Обозреватель щелкните правой кнопкой мыши узел таблиц и нажмите кнопку "Добавить новую таблицу".

    Примечание.

    Может быть использована база данных Northwind или любая другая, к которой можно добавить таблицу.

  2. В Конструкторе таблиц добавьте в таблицу следующие столбцы:

    Имя столбца Тип данных Разрешить значения NULL
    Артикул int False
    Тип int True
    FirstName nvarchar(200) False
    LastName nvarchar(200) False
    Менеджер int True
  3. Задайте столбец ID в качестве первичного ключа

  4. Сохраните таблицу и дайте ей имя Person.

Добавление данных в таблицу

Чтобы вы могли убедиться, что наследование конфигурировано правильно, в таблицу нужно ввести некоторые данные для каждого класса в наследовании единственной таблицы.

Для добавления данных в таблицу

  1. Откройте таблицу в окне просмотра данных. (Щелкните правой кнопкой мышиТаблица person в сервере Обозреватель или базе данных Обозреватель и нажмите кнопку "Показать данные таблицы".)

  2. Скопируйте в таблицу следующие данные. (Его можно скопировать, а затем вставить в таблицу, выбрав всю строку в списке Область результатов .)

    Артикул Тип FirstName LastName Менеджер
    1 1 Anne Wallace NULL
    2 1 Carlos Grilo NULL
    3 1 Yael Peled NULL
    4 2 Gatis Ozolins 1
    5 2 Andreas Hauser 1
    6 2 Tiffany Phuvasate 1
    7 2 Alexey Orekhov 2
    8 2 Michał Poliszkiewicz 2
    9 2 Tai Yee 2
    10 2 Fabricio Noriega 3
    11 2 Mindy Martin 3
    12 2 Ken Kwok 3

Создание нового проекта

Теперь, когда таблица создана, создайте новый проект, чтобы продемонстрировать настройку наследования.

Создание нового приложения Windows Forms

  1. В Visual Studio в меню Файл выберите пункты Создать>Проект.

  2. Разверните Visual C# или Visual Basic в левой области, а затем выберите "Рабочий стол Windows".

  3. В средней области выберите тип проекта приложения Windows Forms.

  4. Назовите проект InheritanceWalkthrough и нажмите кнопку "ОК".

    Создается проект InheritanceWalkthrough и добавляется в Обозреватель решений.

Добавление в проект файла классов LINQ to SQL

Для добавления файла LINQ to SQL в проект

  1. В меню Проект выберите Добавить новый элемент.

  2. Выберите шаблон Классы LINQ to SQL и нажмите кнопку Добавить.

    Файл .dbml добавляется в проект и откроется конструктор операций ввода-вывода .

Создание наследования с использованием реляционного конструктора объектов

Настройте наследование путем перетаскивания объекта Наследование из Панели элементов на область конструктора.

Чтобы создать наследование, выполните следующие действия

  1. В Обозреватель сервера или базе данных Обозреватель перейдите к таблице Person, созданной ранее.

  2. Перетащите таблицу Person в область конструктора O/R Designer .

  3. Перетащите вторую таблицу Person в конструктор O/R и измените его имя на Employee.

  4. Удалите свойство Manager из объекта Person.

  5. Удалите свойства Type, ID, FirstName и LastName из объекта Employee. (Другими словами, удалите все свойства, кроме свойства Manager.)

  6. Из вкладки Реляционный конструктор объектовПанели элементов создайте Наследование между объектами Person и Employee. Чтобы выполнить это, щелкните по пункту Наследование в Панели элементов и отпустите кнопку мыши. Затем щелкните объект Employee и объект Person в конструкторе O/R. Стрелка на линии наследования указывает на объект Person .

  7. Щелкните по линии Наследование на области конструктора.

  8. Задайте свойству Свойство дискриминатора значение Type.

  9. Задайте свойству Производное значение дискриминатора класса значение 2.

  10. Задайте свойству Базовое значение дискриминатора класса значение 1.

  11. Задайте свойству Наследование по умолчанию значение Person.

  12. Выполните сборку проекта.

Выполнение запроса наследуемого класса и отображение данных на форме

Теперь вы добавите код в форму, которая запрашивает определенный класс в объектной модели.

Для создания запроса LINQ и отображения результатов на форме

  1. Перетащите ListBox на форму Form1.

  2. Дважды щелкните форму, чтобы создать обработчик событий Form1_Load.

  3. Добавьте следующий код в обработчик событий Form1_Load .

    NorthwindDataContext dc = new DataClasses1DataContext();
    var results = from emp in dc.Persons
                  where emp is Employee
                  select emp;
    
    foreach(Employee Emp in results)
    {
        listBox1.Items.Add(Emp.LastName)
    }
    

Тестирование приложения

Запустите приложение и убедитесь, что записи, отображенные в списке, представляют всех работников (записи, которые имеют значение 2 в столбце Type).

Тестирование приложения

  1. Нажмите клавишу F5.

  2. Убедитесь, что отображаются только записи со значением 2 в их столбце Type.

  3. Закройте форму. (В меню Отладка щелкните пункт Остановить отладку.)