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


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

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

Например, рассмотрим таблицу 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 2012

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

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

LINQ to SQL [LINQ to SQL]

Inheritance in Visual Basic