Tworzę model POCO do użycia z kodem struktury jednostki najpierw CTP5. Używam dekoracji, aby stworzyć mapę właściwości na kolumnę PK. Ale jak mogę zdefiniować PK w więcej niż jednej kolumnie, a konkretnie, jak mogę kontrolować kolejność kolumn w indeksie? Czy wynika to z kolejności właściwości w klasie?
Dzięki!
Aby uzupełnić poprawną odpowiedź przesłaną przez Slaumę, możesz użyć metody HasKey , aby określić kolejność również złożonych kluczy głównych:
public class User { public int UserId { get; set; } public string Username { get; set; } } public class Ctp5Context : DbContext { public DbSet<User> Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<User>().HasKey(u => new { u.UserId, u.Username }); } }
źródło
Jeśli tak jak ja wolisz użyć pliku konfiguracyjnego, możesz to zrobić w ten sposób (na podstawie przykładu Manaviego):
public class User { public int UserId { get; set; } public string Username { get; set; } } public class UserConfiguration : EntityTypeConfiguration<User> { public UserConfiguration() { ToTable("Users"); HasKey(x => new {x.UserId, x.Username}); } }
Oczywiście musisz dodać plik konfiguracyjny do swojego kontekstu:
public class Ctp5Context : DbContext { public DbSet<User> Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new UserConfiguration()); } }
źródło
Użyj jako anonimowego obiektu:
modelBuilder.Entity<UserExamAttemptQuestion>().ToTable("Users").HasKey(o => new { o.UserId, o.Username });
źródło