c# - entity data model
實體框架6:具有導航屬性的多列唯一索引 (1)
您必須明確包含外鍵,導航屬性上的註釋通常不起作用。
[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; }
這應該工作(未測試)。
如何在模型上設置多列索引:
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唯一性。