我正在用c#編寫一個數據訪問層來查找數據庫中的庫存項目。我有一個像getStockItemByStockCode(string stockCode)這樣很容易的方法,但是如何編寫一個基於屬性組合來查找stockItem的方法?數據訪問層根據多個屬性查找記錄
例如,如果我向方法傳遞StockFilter對象並設置要過濾的屬性,如何創建實體框架查詢來完成此操作而不會變得複雜?或者我應該只是獲取所有記錄並將其過濾到業務層,這對我來說聽起來不太合適,因爲這意味着我將帶回不需要的數據。
這是我使用的股票代碼,讓我的股票項目的方法:
public StockDTO getStockItemByStockCode(string stockCode)
{
StockDTO stockItem = null;
using (var db = new DbContext())
{
var aStock = (from stock in db.STK_MASTER
where stock.STOCK_CODE.Equals(stockCode)
select stock).Single();
Mapper.CreateMap<STK_MASTER, StockDTO>();
StockDTO stockDto = Mapper.Map<STK_MASTER, StockDTO>(aStock);
stockItem = stockDto;
}
return stockItem;
}
這是我想使用基於屬性的組合讓我的股票項目的方法標題:
public StockDTO getStockItem(StockFilter stockProperties)
有,我可以用這個模式還是什麼? 庫存物品屬性可能包括諸如上次銷售日期,銷售數量,價格範圍等內容
介意使用'Expression>'? –
Fendy
我想你想使用StockDTO作爲查詢參數來匹配數據源中的項目。 **第一個問題**:您確定每個StockDTO的屬性都有一個可用於標記的「空值」(=「不關心搜索中的此屬性值」)嗎? **第二個問題**:你可以考慮使用假的QueryStockDTO類作爲StockDTO的_query object_嗎?你甚至可以使用微映射器來交換它們之間的屬性。 –
它實際上不一定是DTO對象。我實際上認爲現在考慮使用DTO可能不是一個好主意。是的,我可以使用某種不是DTO的Filter對象,專門用於查詢。我改變了我的問題使用StockFTOter對象而不是StockDTO – Asagohan