簡體   English   中英

實體框架,成為實體的一部分

[英]Entity Framework, Getting part of an entity

我有一個只有一個字段的實體,有時不想返回。

我現在將其設置為null。 有沒有一種方法可以在查詢本身中指定它,而不是像我在這里一樣將其清除?

    public async Task<IQueryable<XYZXY>> GetStuff()
    {
            histories =
                _db.Stuffs
                    .Where(n => n.NationId == User.NationId)
                    .OrderBy(x => x.DateSent);
            await histories.ForEachAsync(d => d.Attachment = null);
            return histories;

    }

您正在尋找的東西稱為投影,這是您想要從服務器投影到結果集中的東西。

在EF中,投影是通過查詢的選擇行和已完成的所有包含的組合來完成的。

如果附件是導航屬性訪問的第二張表,除非您正在進行延遲加載(通常由nav屬性上的virtual關鍵字表示,例如public virtual Attachment Attachment {get;set;}否則它不會由當前查詢返回(IE將為null))。 public virtual Attachment Attachment {get;set;} )。 如果附件是列投影則更復雜

您有2個選項,請使用匿名類型,例如:

_db.Stuffs
   .Where(n => n.NationId == User.NationId)
   .OrderBy(x => x.DateSent)
   .Select(x=> new { A = x.A, B = x.B .... /*Dont list attachment*/});

或重用現有對象

_db.Stuffs
   .Where(n => n.NationId == User.NationId)
   .OrderBy(x => x.DateSent)
   .Select(x=> new Stuff { A = x.A, B = x.B .... /*Dont list attachment*/});

請注意,自定義投影不會被跟蹤,因此更改屬性和調用保存將無法工作。

暫無
暫無

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

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