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

Реляционный конструктор объектов (Реляционный конструктор объектов) поддерживает концепцию наследования одиночных таблиц, так как именно она обычно осуществляется в реляционных системах. При однотабличном наследовании имеется единственная таблица базы данных, которая содержит поля как для родительских данных, так и для дочерних. Для реляционных данных столбец дискриминатора содержит значение, которое определяет, какому классу принадлежит каждая запись.

Например, рассмотрим таблицу Persons, которая содержит данные всех сотрудников компании. Некоторые лица являются служащими, а некоторые — менеджерами. Таблица Persons содержит столбец с именем EmployeeType, который имеет значение 1 для менеджеров и значение 2 для служащих; это — столбец дискриминатора. В этом случае можно создать подкласс служащих и заполнить класс только записями, которые имеют в столбце EmployeeType значение 2. Кроме того, можно удалить из каждого класса неприменимые столбцы.

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

Чтобы создать наследуемые классы данных

  1. Откройте Реляционный конструктор объектов путем добавления элемента LINQ to SQL Classes в существующий проект на Visual Basic или C#.

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

  3. Перетащите второй экземпляр таблицы на Реляционный конструктор объектов и переименуйте ее. Это производный класс или подкласс.

  4. Щелкните по Наследование на вкладке Реляционный конструктор объектов Панели элементов, после чего щелкните по подклассу (по таблице, которую вы переименовали) и подключите его к базовому классу.

    Примечание

    Щелкните элемент Наследование в области элементов и, отпустив кнопку мыши, щелкните второй экземпляр класса, созданный на шаге 3, а затем щелкните первый класс, созданный на шаге 2.Стрелка на линии наследования укажет на первый класс.

  5. Удалите в каждом классе свойства объектов, которые не должны выводиться и не используются для ассоциаций. Если попробовать удалить свойства объекта, используемые для ассоциаций, будет выдано сообщение об ошибке: Нельзя удалить свойство <имя свойства>, поскольку оно участвует в ассоциации <имя ассоциации>.

    Примечание

    Поскольку производный класс наследует свойства, определенные в своем базовом классе, нельзя определить в каждом классе одинаковые столбцы.(Столбцы внедряются как свойства.) Можно разрешить создание столбцов в производном классе, устанавливая Модификатор наследования на свойство в базовом классе.Дополнительные сведения см. в разделе Overriding Properties and Methods.

  6. Выберите линию наследования в конструкторе Реляционный конструктор объектов.

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

  8. Задайте в свойстве Значение производного класса дискриминатора значение в базе данных, которое обозначает запись в качестве наследуемого типа. (Это значение хранится в столбце дискриминатора и используется для обозначения наследуемого класса.)

  9. Задайте в свойстве Дискриминатор базового класса значение, которое обозначает запись в качестве базового типа. (Это значение хранится в столбце дискриминатора и используется для обозначения базового класса.)

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

См. также

Задачи

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

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

Ссылки

Наследование (Руководство по программированию на C#)

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

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

Новые возможности разработки приложений для работы с данными

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

Доступ к данным в Visual Studio

LINQ to SQL

Inheritance in Visual Basic