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

Обновлен: November 2007

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

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

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

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

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

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

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

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

    Bb384573.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    Bb384573.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

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

См. также

Задачи

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

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

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

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

Новые возможности данных

Ссылки

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

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

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

LINQ to SQL

Наследование в Visual Basic