Entity Framework6: 具有导航功能的多列唯一索引属性

Entity Framework 6: Multicolumn unique index featuring navigation property

如何在模型上设置多列索引:

public class Meta
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public Guid Id { get; set; }

    [Index("MetaPeriodDateUnq", IsUnique = true, Order = 2)]
    [Required] 
    public DateTime Date { get; set; }

    [Index("MetaPeriodDateUnq", IsUnique = true, Order = 1)]
    [Required] 
    public virtual PeriodType Period { get; set; }

    /*
    ...
    */
}

public class PeriodType
{
    [Key]
    public Guid Id { get; set; }

    /*
    ...
    */
}

数据库初始化后只有 "MetaPeriodDateUnq" 索引提及 Meta.Date 列,但我依赖 Meta.Date + Meta.Period.Id 唯一性。

您必须明确包含外键,导航属性上的注释通常不起作用。

[Index("MetaPeriodDateUnq", IsUnique = true, Order = 2)]
public DateTime Date { get; set; }

[Index("MetaPeriodDateUnq", IsUnique = true, Order = 1)]
public Guid PeriodId { get; set; }

public virtual PeriodType Period { get; set; }

这应该有效(未测试)。