如何在模型上设置多列索引:
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唯一性。
答案 0 :(得分:8)
您必须明确包含外键,导航属性上的注释通常不起作用。
[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; }
这应该有效(未经测试)。