Bonjour,

Voici l'idée j'ai 3 tables:.
1 table polymorphique ex. Dossier.
2 table propriétaires ex. Client & employé.

Les classes:
  • Dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Directory{
        public int Id { get; set; }
        public UserType Type { get; set; } // "Employe"(0) or "Client"(1)
        public int TypeId { get; set; } // Id of the respective Employe or Client
        public string Title { get; set; }
    }







Donc des employés et des clients peuvent posséder des dossiers.
ces dossiers se retrouvent donc tous dans une même table étant donné que l'object est le même seul le propriétaire est différent.
(Ces class sont des class d'exemple, d'où le fait qu'il n'y ai pas d'héritage User, ...)

Je cherche maintenant à générer le code ModelBuilder pour faire la liaison entre ces classes et la table directory en Db

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
modelBuilder.Entity<Directory>()
            .HasKey(p => p.Id);
 
        modelBuilder.Entity<Directory>()
            .HasDiscriminator<UserType>("Type")
            .HasValue<Employee>(UserType.Employee)
            .HasValue<Client>(UserType.Client);
 
        modelBuilder.Entity<Directory>()
            .HasOne<Employee>()
            .WithMany(e => e.Directories)
            .HasForeignKey(p => p.TypeId);
 
        modelBuilder.Entity<Directory>()
            .HasOne<Client>()
            .WithMany(c => c.Directories)
            .HasForeignKey(p => p.TypeId);
    }
Voici une exemple des tentatives que j'ai réalisé (je sais pourquoi il ne fonctionnes pas mais je ne vois pas comment je pourrais écrire le ModelBuilder dans ce cas si).
J'ai également essayé de passer par HasDiscriminator mais sans succès.

Je voudrais dans la mesure du possible éviter de créer un objet de liaison (Client ou Employee) dans Directory.

Merci d'avance pour vos idées.