Поделиться через


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

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

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

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

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

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

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

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

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

  • Отображение данных в Windows Form.

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

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

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

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

    Замечание

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

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

    Имя столбца Тип данных Разрешить значения NULL
    ИДЕНТИФИКАТОР int Ложь
    Тип int True
    ИмяИмя nvarchar(200) Ложь
    Фамилия nvarchar(200) Ложь
    Менеджер int True
  3. Задайте столбец идентификатора в качестве первичного ключа.

  4. Сохраните таблицу и назовите ее Person.

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

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

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

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

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

    ИДЕНТИФИКАТОР Тип ИмяИмя Фамилия Менеджер
    1 1 Энн Уоллес NULL
    2 1 Карлос Грило NULL
    3 1 Яэль Peled NULL
    4 2 Гатис Озолинс 1
    5 2 Андреас Хаузер 1
    6 2 Тиффани Phuvasate 1
    7 2 Алексей Орехов 2
    8 2 Михал Poliszkiewicz 2
    9 2 Тай Йи 2
    10 2 Fabricio Норига 3
    11 2 Минди Мартин 3
    12 2 Кен Квок 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 добавляется в проект и откроется конструктор операций ввода-вывода .

Создание наследования с помощью конструктора O/R

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

Создание наследования

  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. Установите свойство дискриминатора на тип.

  9. Установите для свойства Derived Class Discriminator Value значение 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)
    }
    

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

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

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

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

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

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