Bonjour à tous et désolé si je ne suis pas au bon endroit pour poser cette question. Je tiens déjà à remercier tous ceux qui prendront un peu de leur précieux temps pour jeter un oeil à mon problème.

Bon sans plus tarder, j'entre dans le vif du sujet. . Je travaille dans une boite de développement et actuellement je suis sur une application web ASP.NET MVC avec VB.NET sous VS 2013. Pour des raisons que je ne vais pas citer (je ne pense pas que ce soit important), nous (équipe projet) avons décidé d'opter pour le Code First afin d'optenir notre base de données. Il s'avère donc que lors de la modélisation nous avons fait recours à la notion d'héritage. En effet nous avons trois classe (Region, Departement, Commune) qui ont la particularité d'être des collectivités territoriales (du point de vue de notre projet). De ce fait nous avons jugé bon de regrouper les attributs communs aux trois classes en une classe (Collectivite) et de faire appel à la notion d'héritage. Pour que tous le monde puisse suivre, voici le code des différentes classes concernées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
/*Ici c'est la classe Collectivite*/
 
Imports System
Imports System.Collections.Generic
Partial Public Class Collectivite
    Public Property Id As Long
    Public Property Code As String
    Public Property Libelle As String
    Public Property Superficie As Decimal
    Public Property Population As Decimal
    Public Property DateCreation As Date = Now
    Public Property UserId As String
    'Public Overridable Property User As ApplicationUser
    Public Overridable Property PointAcces As ICollection(Of PointAcces) = New HashSet(Of PointAcces)
End Class
 
/*Ici c'est la classe Commune*/
 
Imports System
Imports System.Collections.Generic
Partial Public Class Commune
    Inherits Collectivite
 
    Public Property DepartementId As Long
    Public Overridable Property Departement As Departement
    Public Overridable Property BudgetCommune As ICollection(Of BudgetCommune) = New HashSet(Of BudgetCommune)
    Public Overridable Property ValeurChamps As ICollection(Of ValeurChamps) = New HashSet(Of ValeurChamps)
End Class
 
 
/*Ici c'est la classe Departement*/
 
Imports System
Imports System.Collections.Generic
Partial Public Class Departement
    Inherits Collectivite
 
    Public Property ChefLieu As String
    Public Property RegionId As Long
    Public Overridable Property Region As Region
    Public Overridable Property Communes As ICollection(Of Commune) = New HashSet(Of Commune)
End Class
 
 
/*Ici c'est la classe Region*/
 
Imports System
Imports System.Collections.Generic
 
Partial Public Class Region
    Inherits Collectivite
 
    Public Property ChefLieu As String
    Public Overridable Property Departements As ICollection(Of Departement) = New HashSet(Of Departement)
End Class
Nous avons pu obtenir notre base de données via le code first. Cette base de données contient donc les quatre tables ci-dessus et les tables filles dépendent de la table mère (collectivite). pour faire une insertion, dans l'une des tables filles, nous ajoutons d'abord un tuple dans la table mère qui a un identifiant auto-incrémenté. puis nous récupérons l'Identifiant en question pour l'insérer dans la table fille sur laquelle nous travaillons.

La table Commune est reliée à une autre table appelée "Projet" via une relation (1..n) ---> (1..1), donc la clé de commune est clé étrangère dans projet. Je suis sur la réalisation d'un des états lié au projet et j'ai besoin de récupérer chaque projet ainsi que le nom de la commune concernée mais aussi celui du département et celui de la région car une région compte des départements qui elles à leur tour comptent des communes.

Je ne sais pas si j'ai été assez clair dans la formulation de mon problème. Je vous remercie d'avance pour vos solutions.