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唯一性。





entity-framework-6