8 Configuring relationships

 

This chapter covers

  • Configuring relationships using By Convention
  • Configuring relationships using Data Annotations
  • Configuring relationships using Fluent API
  • Five other ways to map entities to database tables

Chapter 7 described how to configure scalar (nonrelational) properties. This chapter covers how to configure database relationships. I assume you’ve read at least the first part of chapter 7, because configuring relationships uses the same three approaches, By Convention, Data Annotations, and the Fluent API, to map the database relationships.

This chapter covers how EF Core finds and configures relationships between entity classes, with pointers on how to configure each type of relationship—one-to-one, one-to-many, and many-to-many—and examples of each. EF Core’s By Convention relationship rules can quickly configure many relationships, but you’ll also learn about all the Data Annotations and Fluent API configuration options, which allow you to precisely define the way you want a relationship to behave. You’ll also look at features that allow you to enhance your relationships with extra keys and alternative table-mapping approaches. Finally, you consider five ways to map your classes to the database.

8.1      Defining some relationship terms

 
 
 
 

8.2      What navigational properties do you need?

 

8.3      Configuring relationships

 
 

8.4      Configuring relationships By Convention

 
 

8.4.1   What makes a class an entity class?

 
 
 

8.4.2   An example of an entity class with navigational properties

 
 
 

8.4.3   How EF Core finds foreign keys By Convention

 

8.4.4   Nullability of foreign keys—required or optional dependent relationships

 
 

8.4.5   Foreign keys—what happens if you leave them out?

 
 
 
 

8.4.6   When does By Convention configuration not work?

 
 
 

8.5      Configuring relationships by using Data Annotations

 
 
 
 

8.5.1   The ForeignKey Data Annotation

 
 

8.5.2   The InverseProperty Data Annotation

 
 
 
 

8.6      Fluent API relationship configuration commands

 
 
 

8.6.1   Creating a one-to-one relationship

 
 
 

8.6.2   Creating a one-to-many relationship

 
 
 

8.6.3   Creating a many-to-many relationship

 
 
 

Configuring a many-to-many relationship using a linking entity class

 
 

Configuring a many-to-many relationship with direct access to the other entity

 
 
 

8.7      Controlling updates to collection navigational properties

 
 
 

8.8      Additional methods available in Fluent API relationships

 
 

8.8.1   OnDelete—changing the delete action of a dependent entity

 
 
 

8.8.2   IsRequired—defining the nullability of the foreign key

 
 
 
 

Type and naming conventions for shadow property foreign keys

 

8.8.3   HasPrincipalKey—using an alternate unique key

 
 
 

8.8.4   Less-used options in Fluent API relationships

 
 

HasConstraintName—setting the foreign-key constraint name

 
sitemap

Unable to load book!

The book could not be loaded.

(try again in a couple of minutes)

manning.com homepage
test yourself with a liveTest