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

时间:2015-01-07 19:49:02

标签: entity-framework

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

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

1 个答案:

答案 0 :(得分:0)

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

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

转到6.1.2解决。