Я создаю модель POCO для использования с кодом структуры сущности сначала CTP5. Я использую украшение, чтобы создать карту свойств для столбца PK. Но как я могу определить PK более чем для одного столбца и, в частности, как я могу контролировать порядок столбцов в индексе? Это результат порядка свойств в классе?
Благодарность!
Чтобы завершить правильный ответ, представленный Slauma, вы можете использовать метод HasKey, чтобы указать порядок составных первичных ключей:
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 }); } }
источник
Если, как и я, вы предпочитаете использовать файл конфигурации, вы можете сделать это следующим образом (на основе примера Манави):
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}); } }
Очевидно, вам нужно добавить файл конфигурации в свой контекст:
public class Ctp5Context : DbContext { public DbSet<User> Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new UserConfiguration()); } }
источник
Использовать как анонимный объект:
modelBuilder.Entity<UserExamAttemptQuestion>().ToTable("Users").HasKey(o => new { o.UserId, o.Username });
источник