簡體   English   中英

帶有屬性篩選器的 EF Core 支持字段

[英]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.

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