[英]EF Core backing field with filter on property
考慮以下
public class Order
{
private readonly List<OrderLineItem> lineItems = new();
public IReadOnlyCollection<OrderLineItem> LineItems => lineItems;
}
在 DbContext 映射器中
builder.HasMany(u => u.LineItems).WithOne().HasForeignKey(u => u.ProviderOrderId);
builder.Metadata.FindNavigation(nameof(ProviderOrder.LineItems))!.SetPropertyAccessMode(PropertyAccessMode.Field);
我想像這樣向LineItems
屬性添加一個過濾器
public IReadOnlyCollection<OrderLineItem> LineItems => new ReadOnlyCollection<OrderLineItem>(lineItems.Where(u => !u.IsDeleted).ToList())
這可能會對正在保存的數據產生任何影響(即意外過濾掉“軟”刪除的記錄並永久刪除它們)?
根據我的理解,EF Core 只會專門讀取和讀取支持字段,並且該屬性僅用於設置初始映射,也用於對數據的公共訪問。
谷歌搜索做類似事情的人並沒有帶來太多結果,所以這本質上是一種感覺檢查。
謝謝你安慰我。
通過我自己的測試,我現在很滿意將過濾器應用於該屬性是完全正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.