Realtionships.md

EFCore3_Reforged
Marc CHEVALDONNE 5 years ago
parent d480c056ca
commit 87cf607086

@ -97,6 +97,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "p08_BDD_EntityFramework", "
EndProjectSection EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "chap042_EntityFramework", "chap042_EntityFramework", "{ED951AD1-2EB1-49CC-9DBE-E3360E11525B}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "chap042_EntityFramework", "chap042_EntityFramework", "{ED951AD1-2EB1-49CC-9DBE-E3360E11525B}"
ProjectSection(SolutionItems) = preProject
p08_BDD_EntityFramework\Relationships.md = p08_BDD_EntityFramework\Relationships.md
EndProjectSection
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03. Entity relationships with CodeFirst", "03. Entity relationships with CodeFirst", "{593200F9-6D14-43BC-9289-8BB75FAC6552}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03. Entity relationships with CodeFirst", "03. Entity relationships with CodeFirst", "{593200F9-6D14-43BC-9289-8BB75FAC6552}"
EndProject EndProject
@ -568,6 +571,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_041_004_ConsoleTests_w_S
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_042_009_DataSeeding", "p08_BDD_EntityFramework\ex_042_009_DataSeeding\ex_042_009_DataSeeding.csproj", "{B5CEC904-1475-4215-A20A-01BDD219AE25}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_042_009_DataSeeding", "p08_BDD_EntityFramework\ex_042_009_DataSeeding\ex_042_009_DataSeeding.csproj", "{B5CEC904-1475-4215-A20A-01BDD219AE25}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04. Relationships", "04. Relationships", "{C7672736-AA73-4B7E-B5C6-A7A984216372}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -4993,6 +4998,7 @@ Global
{26B0F58C-3373-4965-A00A-FB9F9AA2DFC5} = {78374D80-5BE7-425D-BE62-AD8F26491112} {26B0F58C-3373-4965-A00A-FB9F9AA2DFC5} = {78374D80-5BE7-425D-BE62-AD8F26491112}
{2249C4B0-563D-44C8-AAA5-C8366A8F509C} = {56C5A51B-16E9-4F93-9C32-8F91710391E8} {2249C4B0-563D-44C8-AAA5-C8366A8F509C} = {56C5A51B-16E9-4F93-9C32-8F91710391E8}
{B5CEC904-1475-4215-A20A-01BDD219AE25} = {78374D80-5BE7-425D-BE62-AD8F26491112} {B5CEC904-1475-4215-A20A-01BDD219AE25} = {78374D80-5BE7-425D-BE62-AD8F26491112}
{C7672736-AA73-4B7E-B5C6-A7A984216372} = {55E00151-58A6-4E7D-9457-0BB8213B82F5}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8D31C3AE-36FF-4667-A2A7-0E670245A59E} SolutionGuid = {8D31C3AE-36FF-4667-A2A7-0E670245A59E}

@ -31,7 +31,8 @@ Ce chapitre s'attardera sur le lien entre le mod
* [**ex_042_007 : Value Generation**](ex_042_007_ValueGeneration) : explique comment faire générer des valeurs automatiquement lors de l'insertion ou de la mise à jour * [**ex_042_007 : Value Generation**](ex_042_007_ValueGeneration) : explique comment faire générer des valeurs automatiquement lors de l'insertion ou de la mise à jour
* [**ex_042_008 : Data Seeding before Entity Framework 2.1**](ex_042_008_DataSeeding_before_EF2.1) : explique comment utiliser un stub (méthode qui était recommandée avant EF Core 2.1) * [**ex_042_008 : Data Seeding before Entity Framework 2.1**](ex_042_008_DataSeeding_before_EF2.1) : explique comment utiliser un stub (méthode qui était recommandée avant EF Core 2.1)
* [**ex_042_009 : Data Seeding**](ex_042_009_DataSeeding) : explique comment utiliser un stub (méthode recommandée depuis EF Core 2.1) * [**ex_042_009 : Data Seeding**](ex_042_009_DataSeeding) : explique comment utiliser un stub (méthode recommandée depuis EF Core 2.1)
* [**Relationships**](Relationships.md) : en cliquant [ici](Relationships.md), vous aurez plus de détails sur les relations entre entités
* [**ex_042_010 : One To One relationship with data annotations**](ex_042_009_DataSeeding) :
3. *Schemas and migrations* : 3. *Schemas and migrations* :
Le but de ce chapitre sera de vous montrer comment garder votre modèle et votre base de données synchronisés. Le but de ce chapitre sera de vous montrer comment garder votre modèle et votre base de données synchronisés.
4. *Querying (LINQ to SQL) and saving data* : 4. *Querying (LINQ to SQL) and saving data* :

@ -0,0 +1,17 @@
# 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.
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:
* ```<navigationPropertyName><principalKeyPropertyName>```
* ```<navigationPropertyName>Id```
* ```<principalEntityName><principalKeyPropertyName>```
* ```<principalEntityName>Id```

@ -14,9 +14,9 @@
* V 001, 002, 003 entity types, entity properties * V 001, 002, 003 entity types, entity properties
* V 004, 005, 006 keys, 007 generated values * V 004, 005, 006 keys, 007 generated values
* ? backing fields? * ? backing fields?
* 008 seeding data * V 008, 009 seeding data
* shadow properties
* ###### relationships * ###### relationships
* shadow properties
* single navigation property * single navigation property
* cascade delete * cascade delete
* one to one * one to one

Loading…
Cancel
Save