Bonjour,
J'utilise VS2019, Framework 4.8, C# 8.0 et Entity Framework Core 3.1.3

J'ai la nécessité de nommer de nom de colonne qui sont des clés extérieures pour une table d'association.

La situation présentée n'est qu'un résumé de la situation réelle mais permet de se concentrer sur l'essentiel
Toutes mes classes de base héritent de celle-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    public abstract partial class Identifier
    {
        [Key]
        public int ID { get; set; }
    }
2 entités de base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    public class MaClasse : Identifier
    {
        // Autres propriétés
 
        public virtual ICollection<MaClasseMonAutreClasseLink> MaClasseMonAutreClasseLinks { get; set; } = new HashSet<MaClasseMonAutreClasseLink>();
    }
    public class MonAutreClasse : Identifier
    {
        // Autres propriétés
 
        public virtual ICollection<MaClasseMonAutreClasseLink> MaClasseMonAutreClasseLinks { get; set; } = new HashSet<MaClasseMonAutreClasseLink>();
    }
1 table d'association N-N entre les 2 entités de base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    public class MaClasseMonAutreClasseLink
    {
        // Autres propriétés
 
        public int Identifier1ID { get; set; }
        public MaClasse MonEntite1 { get; set; }
        public int Identifier2ID { get; set; }
        public MonAutreClasse MonEntite2 { get; set; }
    }
Pour une raison que je ne souhaite pas développer ici pour rester concentré sur mon problème, considérez qu'il n'est pas possible de changer les noms dans mon association.

Du coup, je fais configure mes liens et renommage pour ma base de données comme ceci :
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
    public class MaClasseMonAutreClasseLinkConfiguration : IEntityTypeConfiguration<MaClasseMonAutreClasseLink>
    {
        public void Configure(EntityTypeBuilder<MaClasseMonAutreClasseLink> builder)
        {
            builder.HasKey(o => new { o.Identifier1ID, o.Identifier2ID });
 
            builder.Property("Identifier1ID").HasColumnName("MaClasseID");
            builder.Property("Identifier2ID").HasColumnName("MonAutreClassID");
 
            builder.HasOne("Identifier1")
                   .WithMany()
                   .HasForeignKey("Identifier1ID")
                   .OnDelete(DeleteBehavior.Restrict);
 
            builder.HasOne("Identifier2")
                   .WithMany()
                   .HasForeignKey("Identifier2ID")
                   .OnDelete(DeleteBehavior.Restrict);
 
            //Idem
 
            //builder
            //            .HasOne(o => o.Identifier1)
            //            .WithMany(o => o.RuleRuleLinkUsedByRules)
            //            .HasForeignKey(o => o.Identifier1ID);
 
            //builder
            //            .HasOne(o => o.Identifier2)
            //            .WithMany(o => o.RuleRuleLinkUsingRules)
            //            .HasForeignKey(o => o.Identifier2ID);
 
            //base.AddNames(builder);
        }
    }