簡體   English   中英

EF Core 遷移約束條件

[英]EF Core Migration Constraint with condition

我有以下課程:

public class VerizonRequest
{
    public VerizonRequest()
    {
        CreatedDate = DateTime.UtcNow;
    }

    public int DeviceId { get; set; }
    public virtual Device Device { get; set; }

    public string AccountName { get; set; }
    public string RequestId { get; set; }

    public DateTime CreatedDate { get; set; }
    public DateTime? ResultDate { get; set; }
    public VerizonRequestStatus Status { get; set; } = VerizonRequestStatus.Pending;
    public VerizonRequestType RequestType { get; set; }
    public string Comment { get; set; }
}

和地圖類:

public class VerizonRequestMap : IEntityTypeConfiguration<VerizonRequest>
{
    public void Configure(EntityTypeBuilder<VerizonRequest> builder)
    {
        builder.ToTable(nameof(VerizonRequest));
        builder.HasKey(d => d.RequestId);

        builder.HasOne(d => d.Device)
            .WithMany(d => d.VerizonRequests)
            .HasForeignKey(d => d.DeviceId);
    }
}

我想創建一個約束,如果已經有一個具有相同 DeviceId 和 Status = 'Pending' 的記錄,它將無法為同一個 DeviceId 再添加一條記錄

所以,它應該是這樣的:

builder.HasIndex(d => new { d.DeviceId, d.Status });

但僅當 Status = 'Pending' 時(對於 Status != 'Pending',與 DeviceId + Status 的配對可以不止一個,但對於 'Pending' 只有一個)

是否有可能?

感謝@DavidG, HasFilter幫助我:

builder.HasIndex(d => new { d.DeviceId, d.Status }).HasFilter("[Status] = 1");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM