Настройка наследования с использованием реляционного конструктора объектов
Реляционный конструктор объектов (конструктор O/R) поддерживает концепцию наследования одной таблицы, так как она часто реализуется в реляционных системах. При однотабличном наследовании имеется единственная таблица базы данных, которая содержит поля как для родительских данных, так и для дочерних. Для реляционных данных столбец дискриминатора содержит значение, которое определяет, какому классу принадлежит каждая запись.
Например, рассмотрим таблицу Persons
, содержащую всех сотрудников компании. Некоторые лица являются служащими, а некоторые - менеджерами. Таблица содержит столбец с именем EmployeeType
1 для руководителей и значение 2 для сотрудников. Это Persons
столбец дискриминатора. В этом случае можно создать подкласс служащих и заполнить класс только записями, которые имеют в столбце EmployeeType
значение 2. Кроме того, можно удалить из каждого класса неприменимые столбцы.
Создание модели объекта, который использует наследование (и соответствует реляционным данным), может быть несколько запутанным. В следующей процедуре описываются действия, необходимые для настройки наследования при помощи реляционного конструктора объектов. Выполнение универсальных действий без ссылки на существующую таблицу и столбцы может оказаться трудным, поэтому предоставляется пошаговое руководство, в котором используются данные. Подробные пошаговые инструкции по настройке наследования с помощью реляционный конструктор объектов, см. в разделе Пошаговое руководство: Создание LINQ to SQL классы с помощью однотабличного наследования (реляционный конструктор объектов).
Чтобы создать наследуемые классы данных
Откройте конструктор O/R, добавив элемент класса LINQ to SQL в существующий проект Visual Basic или C#.
Перетащите таблицу, которую вы хотите использовать в качестве базового класса, в конструктор O/R.
Перетащите вторую копию таблицы в конструктор O/R и переименуйте ее. Это производный класс или подкласс.
Щелкните наследование на вкладке реляционный конструктор объектов панели элементов, а затем выберите подкласс (переименованную таблицу) и подключите его к базовому классу.
Примечание.
Щелкните элемент наследования на панели элементов и нажмите кнопку мыши, щелкните вторую копию класса, созданного на шаге 3, и выберите первый класс, созданный на шаге 2. Стрелка на линии наследования указывает на первый класс.
Удалите в каждом классе свойства объектов, которые не должны выводиться и не используются для ассоциаций. При попытке удалить свойства объекта, используемые для сопоставлений,
The property <property name> cannot be deleted because it is participating in the association <association name>
возникает ошибка.Примечание.
Поскольку производный класс наследует свойства, определенные в своем базовом классе, нельзя определить в каждом классе одинаковые столбцы. (Столбцы реализуются как свойства.) Вы можете включить создание столбцов в производном классе, задав модификатор наследования для свойства в базовом классе. Дополнительные сведения см. в разделе "Основы наследования" (Visual Basic).
Выберите строку наследования в конструкторе O/R.
В окне свойств задайте для свойства имя столбца, которое различает записи в классах.
Задайте в свойстве Значение производного класса дискриминатора значение в базе данных, которое обозначает запись в качестве наследуемого типа. (Это значение, хранящееся в столбце дискриминатора и используемое для обозначения унаследованного класса.)
Задайте в свойстве Дискриминатор базового класса значение, которое обозначает запись в качестве базового типа. (Это значение, хранящееся в столбце дискриминатора и используемое для обозначения базового класса.)
Дополнительно можно установить свойство Наследование по умолчанию, чтобы обозначить тип в иерархии наследования, который используется при загрузке строк, которые не соответствуют какому-либо определенному коду наследования. Другими словами, если запись имеет значение в своем столбце дискриминационных значений, которые не соответствуют значению в свойствах производного класса дискриминационных значений или базового класса, запись загружается в тип, указанный в качестве значения по умолчанию наследования.
Связанный контент
- Средства LINQ to SQL в Visual Studio
- Пошаговое руководство. Создание классов LINQ to SQL (реляционный конструктор объектов)
- Доступ к данным в Visual Studio
- LINQ to SQL
- Пошаговое руководство. Создание классов LINQ to SQL с использованием наследования с одной таблицей (реляционный конструктор объектов)
- Основы наследования (Visual Basic)
- Наследование