Update Relationships.md

EFCore3_Reforged
Marc CHEVALDONNE 5 years ago
parent 87cf607086
commit d1c05cb9f1

@ -1,17 +1,30 @@
# Relationships
On parle de propriété de navigation dès qu'on a une propriété qui ne peut pas être une donnée simple (string, nombre, bool...).
Par défaut (ie conventions d'écriture), dans une relation,
c'est toujours la primary key qui est utilisée.
On peut utiliser une autre clé en passant par la notation Fluent.
On parle de propriété de navigation dès qu'on a une propriété qui ne peut pas être une donnée simple (string, nombre, bool...).
Par défaut (ie conventions d'écriture), dans une relation,
c'est toujours la primary key qui est utilisée.
On peut utiliser une autre clé en passant par la notation Fluent.
Le plus commun c'est d'avoir des propriétés de navigation
définies sur les deux entités et une clé étrangère (foreign key)
du côté de l'entité dépendante.
* si on une paire de propriétés de navigation sur les deux entités, l'une sera l'inverse de l'autre
* si l'entité dépendante possède une propriété dont le nom vérifie l'un des patrons suivants, alors elle est configurée comme une foreign key:
Le plus commun c'est d'avoir des propriétés de navigation
définies sur les deux entités et une clé étrangère (foreign key)
du côté de l'entité dépendante.
* si a on une paire de propriétés de navigation sur les deux entités, l'une sera l'inverse de l'autre
* si l'entité dépendante possède une propriété dont le nom vérifie l'un des patrons suivants, alors elle est configurée comme une foreign key:
* ```<navigationPropertyName><principalKeyPropertyName>```
* ```<navigationPropertyName>Id```
* ```<principalEntityName><principalKeyPropertyName>```
* ```<principalEntityName>Id```
* ```<principalEntityName>Id```
* si on a aucune propriété de clé étrangère, une shadow property est créée avec le nom ```<navigationPropertyName><principalKeyPropertyName>``` ou ```<principalEntityName><principalKeyPropertyName>```.
* Single Property Navigation vs. Pair Navigation Property
* Cascade Delete
* ex01: single navigation property (conventions & data annotations)
* ex02: single navigation property (fluent api)
* ex03: one to one (conventions & data annotations)
* ex04: one to one (fluent api)
* ex05: one to many (conventions & data annotations)
* ex06: one to many (fluent api)
* ex07: many to many (conventions & data annotations)
* ex08: many to many (fluent api)
* ex09: shadow property
* ex10: dictionaries (fluent api)
Loading…
Cancel
Save