我有一個問題得到Add-Migration
創建正確的migration.CreateIndex()
調用。我有一個POCO這樣的:CodeFirst中使用遷移的多個重疊索引
class MyPoco
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Index("IX_Test", 1)]
int PartitionId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
int LocalId { get; set; }
[Index("IX_Test", 2)]
int LocalId2 { get; set; }
}
從這個Add-Migration
產生CreateIndex("dbo.MyPoco", "LocalId2", unique: true, name: "IX_Test");
。我預計類似於CreateIndex("dbo.MyPoco", new[] { "PartitionId", "LocalId2" }, unique: true, name: "IX_Test");
根本原因似乎是EF模型只能爲每個屬性註冊一個索引(生成的遷移EDMX中的customannotation:Index="{ Name: IX_Test, Order: 2, IsUnique: True }"
)。由於我不使用數據庫生成的鍵,EF創建索引intead,這似乎覆蓋我的索引。
任何人都知道如何使用EF Code First生成兩個重疊的索引並讓EF Migrations生成正確的輸出?