dans le code d’infrastructure d’abord, comment utiliser KeyAtsortingbute sur plusieurs colonnes

Je crée un modèle POCO à utiliser avec le code framework d’entité CTP5 en premier. J’utilise la décoration pour créer une carte de propriétés dans une colonne PK. Mais comment puis-je définir un PK sur plus d’une colonne et comment contrôler l’ordre des colonnes dans l’index? Est-ce un résultat de l’ordre des propriétés dans la classe?

Merci!

    Vous pouvez spécifier l’ordre des colonnes dans les atsortingbuts, par exemple:

    public class MyEntity { [Key, Column(Order=0)] public int MyFirstKeyProperty { get; set; } [Key, Column(Order=1)] public int MySecondKeyProperty { get; set; } [Key, Column(Order=2)] public ssortingng MyThirdKeyProperty { get; set; } // other properties } 

    Si vous utilisez la méthode Find d’un DbSet vous devez prendre cet ordre en compte pour les parameters clés.

    Pour compléter la réponse correcte soumise par Slauma, vous pouvez utiliser la méthode HasKey pour spécifier également un ordre pour les clés primaires composites:

     public class User { public int UserId { get; set; } public ssortingng Username { get; set; } } public class Ctp5Context : DbContext { public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().HasKey(u => new { u.UserId, u.Username }); } } 

    Si, comme moi, vous préférez utiliser un fichier de configuration, vous pouvez le faire de cette manière (à partir de l’exemple de Manavi):

     public class User { public int UserId { get; set; } public ssortingng Username { get; set; } } public class UserConfiguration : EntityTypeConfiguration { public UserConfiguration() { ToTable("Users"); HasKey(x => new {x.UserId, x.Username}); } } 

    De toute évidence, vous devez append le fichier de configuration à votre contexte:

     public class Ctp5Context : DbContext { public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new UserConfiguration()); } } 

    Utiliser comme object anonyme:

     modelBuilder.Entity().ToTable("Users").HasKey(o => new { o.UserId, o.Username });