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