Si vous deviez définir vos classes comme celui-ci
public class EntityA
{
public int EntityAId { get; set; }
public virtual EntityB EntityB1 { get; set; }
public virtual EntityB EntityB2 { get; set; }
public virtual EntityB EntityB3 { get; set; }
}
public class EntityB
{
public int EntityBId { get; set; }
public string Name { get; set; }
}
code EF Première créeraient deux tables (EntityAs, EntityBs). Par convection, la table EntityAs aurait une clé primaire d'EntityAId et trois clés étrangères reliant EntityB appelées (EntityB1_EntityBId, EntityB2_EntityBId, EntityB3_EntityBId).
Vous pouvez toutefois remplacer cette convection en ajoutant des propriétés pour les clés étrangères et en ajoutant des balises RelatedTo dans les propriétés de navigation.
Par exemple:
public class EntityA
{
public int EntityAId { get; set; }
public int MySpecialFkName { get; set; }
[RelatedTo(ForeignKey = "MySpecialFkName")]
public EntityB EntityB1 { get; set; }
}
Si vous ne voulez pas que les méta-données associésà dans votre classe POCO, vous pourriez plutôt définir la relation dans la méthode OnModelCreating.
modelBuilder.Entity<EntityA>().HasRequired(p => p.EntityB1)
.HasConstraint((fk, pk) => fk.MySpecialFkName == pk.EntityBId);