![](/img/trans.png)
[英]EF Core Fluent API - unique constraint not being detected/included in migration
[英]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.