使用迁移的 CodeFirst 中的多个重叠索引

Multiple overlapping indexes in CodeFirst using migrations

我在获取 Add-Migration 创建正确的 migration.CreateIndex() 调用时遇到问题。我有一个这样的 POCO:

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 模型的每个属性只能有一个索引注释(customannotation:Index="{ Name: IX_Test, Order: 2, IsUnique: True }" 在生成的迁移 EDMX 中)。由于我不使用数据库生成的键,因此 EF 创建了一个 Intead,它似乎覆盖了我的索引。

有人知道如何使用 EF Code First 生成两个重叠索引并让 EF Migrations 生成正确的输出吗?

似乎是 EF 6.1.1 中的已知错误。外键约定存在覆盖现有索引注释的错误。

http://entityframework.codeplex.com/workitem/2382

通过转到 6.1.2 解决。