在實際代碼中,可能使用linq比去寫大段的sql更有效率。
使用linq進行查詢將面臨幾個關鍵問題:前端
1.查詢條件如何自動匹配
2.分頁如何封裝
3.一張表中可能全是基礎信息的ID,若是使用linq關聯查詢,和寫大段的sql並不方便多少,如何能夠自動將想要的基礎信息帶出來
目前有一個簡單的思路,還待完善,先記錄一下
先在SqlRepositorys倉庫類中寫一下linq的分頁sql
public IQueryable<T> SqlQueryAndParameter<T>(IQueryable<T> linqsql,RequestPages pages) { pages.count = linqsql.Count(); return linqsql.Skip((pages.pageNum - 1) * pages.pageSize).Take(pages.pageSize); }
T中須要定義好查詢結果,還須要建一個T的DTO,在DTO中包含其餘的信息,如:ID對應的Name信息。藉助AutoMapper,定義T=>TDto的對應,對Name信息進行映射時,用T中的ID值從數據庫中去出Name數據庫
CreateMap<BT_Seller, BT_SellerDto>() .ForMember(x=>x.WarehouseName,t=>t.MapFrom(item=>GetStockName(item.WarehouseId))); private string GetStockName(int? WarehouseId) { var istockhelper = (IStockHelper)ServiceInstance.Instance?.GetService(typeof(IStockHelper)); var stock = istockhelper.GetStcokForStockId(WarehouseId); return stock == null ? "" : stock.Warehouse; }
這樣,在service中只要查詢那張想要查詢的表,而後經過AutoMapper映射就能夠得到須要返回給前端的給用戶展現的數據了List了。
目前,問題2,3均可以獲得解決,可是問題1,查詢條件如何自動匹配的問題尚未太好的辦法。就先記錄一下吧,等之後再來還技術債app
若是有好的想法,歡迎交流,一塊兒成長code