From 87cf6070866cfdefb98a223ddf568841016db919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Chevaldonn=C3=A9?= Date: Wed, 15 Jan 2020 15:46:32 +0100 Subject: [PATCH] Realtionships.md --- Exemples.sln | 6 ++++++ p08_BDD_EntityFramework/ReadMe.md | 3 ++- p08_BDD_EntityFramework/Relationships.md | 17 +++++++++++++++++ p08_BDD_EntityFramework/temp.md | 4 ++-- 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 p08_BDD_EntityFramework/Relationships.md diff --git a/Exemples.sln b/Exemples.sln index 7637c3e..b9dda4e 100644 --- a/Exemples.sln +++ b/Exemples.sln @@ -97,6 +97,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "p08_BDD_EntityFramework", " EndProjectSection EndProject 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 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "03. Entity relationships with CodeFirst", "03. Entity relationships with CodeFirst", "{593200F9-6D14-43BC-9289-8BB75FAC6552}" EndProject @@ -568,6 +571,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ex_041_004_ConsoleTests_w_S 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}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "04. Relationships", "04. Relationships", "{C7672736-AA73-4B7E-B5C6-A7A984216372}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -4993,6 +4998,7 @@ Global {26B0F58C-3373-4965-A00A-FB9F9AA2DFC5} = {78374D80-5BE7-425D-BE62-AD8F26491112} {2249C4B0-563D-44C8-AAA5-C8366A8F509C} = {56C5A51B-16E9-4F93-9C32-8F91710391E8} {B5CEC904-1475-4215-A20A-01BDD219AE25} = {78374D80-5BE7-425D-BE62-AD8F26491112} + {C7672736-AA73-4B7E-B5C6-A7A984216372} = {55E00151-58A6-4E7D-9457-0BB8213B82F5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8D31C3AE-36FF-4667-A2A7-0E670245A59E} diff --git a/p08_BDD_EntityFramework/ReadMe.md b/p08_BDD_EntityFramework/ReadMe.md index b4c1e22..06bc0a5 100644 --- a/p08_BDD_EntityFramework/ReadMe.md +++ b/p08_BDD_EntityFramework/ReadMe.md @@ -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_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) - + * [**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* : 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* : diff --git a/p08_BDD_EntityFramework/Relationships.md b/p08_BDD_EntityFramework/Relationships.md new file mode 100644 index 0000000..0c3d8a0 --- /dev/null +++ b/p08_BDD_EntityFramework/Relationships.md @@ -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: + * `````` + * ```Id``` + * `````` + * ```Id``` \ No newline at end of file diff --git a/p08_BDD_EntityFramework/temp.md b/p08_BDD_EntityFramework/temp.md index 55ab5d0..40e5ed3 100644 --- a/p08_BDD_EntityFramework/temp.md +++ b/p08_BDD_EntityFramework/temp.md @@ -14,9 +14,9 @@ * V 001, 002, 003 entity types, entity properties * V 004, 005, 006 keys, 007 generated values * ? backing fields? -* 008 seeding data -* shadow properties +* V 008, 009 seeding data * ###### relationships + * shadow properties * single navigation property * cascade delete * one to one