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

Реляционный конструктор объектов поддерживает наследование одиночных таблиц, так как именно обычно осуществляется в реляционных системах. Это пошаговое руководство разворачивается после универсальных шагов, описанных в разделе Как настроить наследование с использованием реляционного конструктора объектов, обеспечивает некоторые реальные данные, чтобы продемонстрировать использование наследования в Реляционный конструктор объектов.

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

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

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

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

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

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

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

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

Создайте таблицу в Наследовать из

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

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

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

    Примечание

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

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

    Имя столбца

    Тип данных

    Разрешить значения NULL

    ID

    int

    False

    Type

    int

    True

    FirstName

    nvarchar(200)

    False

    LastName

    nvarchar(200)

    False

    Manager

    int

    True

  3. Задайте столбец ID в качестве первичного ключа.

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

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

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

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

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

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

    ID

    Тип

    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

  1. В меню Файл создайте новый проект.

  2. Назовите проект InheritanceWalkthrough.

    Примечание

    Реляционный конструктор объектов поддерживается в проектах Visual Basic и C#.Создайте новый проект на одном из этих языков.

  3. Выберите шаблон Приложение Windows Forms и нажмите кнопку OK. Дополнительные сведения см. в разделе Создание приложения для Windows.

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

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

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

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

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

    DBML-файл добавляется в проект, и Реляционный конструктор объектов открывается.

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

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

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

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

  2. Перетащите таблицу Person на область конструктора Реляционный конструктор объектов.

  3. Перетащите вторую таблицу Person на Реляционный конструктор объектов и измените ее имя на Employee.

  4. Удалите свойство Менеджер из объекта Person.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Dim dc As New DataClasses1DataContext
    Dim results = From emp In dc.Persons _
        Where TypeOf emp Is Employee _
        Select emp
    
    For Each Emp As Employee In results
        ListBox1.Items.Add(Emp.LastName)
    Next
    
    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. Закройте форму. (В меню Отладка щелкните по пункту меню Прекратить отладку.)

См. также

Задачи

Как добавить классы LINQ to SQL в проект (реляционный конструктор объектов)

Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)

Как назначить хранимые процедуры для выполнения обновлений, вставок и удалений (реляционный конструктор объектов)

Как создать объектную модель на языке Visual Basic или C# (LINQ to SQL)

Основные понятия

Общие сведения о реляционном конструкторе объектов

Другие ресурсы

LINQ to SQL