ContentType
- > EF模型是否可以使用DTO的ODataQueryOptions?
ContentTypes
- > DTO
在我的OData控制器:
public Task<IQueryable<ContentTypes>> Get(ODataQueryOptions<ContentTypes> options)
{
var result = options.ApplyTo(_repository.Query().Get()
.Where(u => u.UserId == userId)
.OrderBy(o => o.Description))
.Cast<ContentTypes>();
return result;
}
試圖以應用ODataQueryOptions
當我得到一個錯誤500。由於該課程已經繼承了ODataController
,我甚至需要做options.ApplyTo(...)
嗎?
EF濾鏡之後的原因是因爲您處理投影的方式。看看我上面發佈的答案。我也會看你的倉庫,並確保那裏沒有ToList()或其他強制執行方法。此外,當您使用$ select或$ expand時,這將會中斷,因爲結果不會是ContentType類型。 – Schandlich
@Schandlich - 你的建議部分起作用,當我排除'options.ApplyTo()'時,我不會獲得所有其餘的OData信息,例如'$ inlinecount = allpages'的值,因此沒有分頁細節。我不想從數據庫返回所有記錄,然後在客戶端進行過濾。如何處理有數千條記錄的情況呢?你正確的做'$ select'或'$ expand'失敗。我將如何得到這個工作。另外,爲什麼不使用Automapper來完成一些工作? – ElHaix
這是一篇關於爲什麼不使用Automapper的好文章。 http://www.devtrends.co.uk/blog/stop-using-automapper-in-your-data-access-code。分頁不起作用的原因是因爲在應用之前的某個時刻,查詢已經到達數據庫。我不知道它是AutoMapper導致問題還是您的存儲庫。我可能是Cast演講。我會努力讓它開箱即用,而不是試圖強制擴展並選擇與您的設置一起工作。 http://beyondtheduck.com/revisting-projecting-and-the-odata-expand-query-option/ – Schandlich