Data class inheritance (O/R Designer)

 

For the latest documentation on Visual Studio 2017, see Data class inheritance (O-R Designer) on docs.microsoft.com. Like other objects, LINQ to SQL classes can use inheritance and be derived from other classes. In code, you can specify inheritance relationships between objects by declaring that one class inherits from another. In a database, inheritance relationships are created in several ways. The Object Relational Designer (O/R Designer) supports the concept of single-table inheritance as it is often implemented in relational systems.

In single-table inheritance, there is a single database table that contains columns for both base and derived classes. With relational data, a discriminator column contains the value that determines which class any given record belongs to. For example, consider a Persons table that contains everyone employed by a company. Some people are employees and some people are managers. The Persons table contains a column named Type that has a value of 1 for managers and a value of 2 for employees. The Type column is the discriminator column. In this scenario, you can create a subclass of employees and populate the class with only records that have a Type value of 2.

When you configure inheritance in entity classes by using the O/R Designer, drag the single table that contains the inheritance data onto the designer two times: one time for each class in the inheritance hierarchy. After you add the tables to the designer, connect them with an Inheritance item from the Object Relational Designer toolbox and then set the four inheritance properties in the Properties window.

The following table lists the inheritance properties and their descriptions:

PropertyDescription
Discriminator PropertyThe property (mapped to the column) that determines which class the current record belongs to.
Base Class Discriminator ValueThe value (in the column designated as the Discriminator Property) that determines that a record is of the base class.
Derived Class Discriminator ValueThe value (in the property designated as the Discriminator Property) that determines that a record is of the derived class.
Inheritance DefaultThe class that should be populated when the value in the property designated as the Discriminator Property does not match either the Base Class Discriminator Value or the Derived Class Discriminator Value.

Creating an object model that uses inheritance and corresponds to relational data can be somewhat confusing. This topic provides information about the basic concepts and individual properties that are required for configuring inheritance. The following topics provide a clearer explanation of how to configure inheritance with the O/R Designer.

TopicDescription
How to: Configure inheritance by using the O/R DesignerDescribes how to configure entity classes that use single-table inheritance by using the O/R Designer.
Walkthrough: Creating LINQ to SQL Classes by Using Single-Table Inheritance (O/R Designer)Provides step-by-step instructions about how to configure entity classes that use single-table inheritance by using the O/R Designer.

LINQ to SQL Tools in Visual Studio
Walkthrough: Creating LINQ to SQL Classes (O-R Designer)
Walkthrough: Creating LINQ to SQL Classes by Using Single-Table Inheritance (O/R Designer)
Getting Started

Show: