Hala Çekirdek araçları hakkında bilgi sahibi olmaya devam ediyorum; Daha fazla araştırma, bu özelliğin desteklenmediğini, ancak bir çekme isteğini ele alacağını ortaya koydu.
https://github.com/aspnet/EntityFrameworkCore/issues/4050
IndexAttribute yokluğunda Kod İlk modellere dizinleri eklemek için iş çevresinde
önerilen yol Varlık Framework Akıcı API kullanmaktır.
/// <summary>
/// Creates database structure not supported with Annotations using Fluent syntax.
/// </summary>
/// <param name="optionsBuilder">The configuration interface.</param>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Story>().HasIndex(
story => new { story.Date, story.Published }).IsUnique(false);
}
Bu Story.Date için iki sütunlu dizin oluşturur ve bu benzersiz değil Story.Published: Örneğin şu (DBContext türetilmiştir) sizin bağlamda eklenebilir. Bu değişiklikle takiben kullanım:
dotnet ef migrations add <name>
dotnet ef database update
Bu indeks oluşturmak için oluşturulan Göç kodunun ne tür ilginçtir var (bunun yerine Bağlam sınıfına kod ekleme dizini oluşturmak için doğrudan geçişleri özelleştirmek için bu kullanabilirsiniz) : bu tür labors
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Stories",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Autoincrement", true),
Author = table.Column<string>(maxLength: 64, nullable: true),
Date = table.Column<DateTime>(nullable: false),
Published = table.Column<bool>(nullable: false),
Title = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Stories", x => x.Id);
});
migrationBuilder.CreateIndex(
name: "IX_Stories_Date_Published",
table: "Stories",
columns: new[] { "Date", "Published" });
}
meyve: