Я пишу слой доступа к данным в C# для поиска элементов запаса в базе данных. У меня есть такой метод, как getStockItemByStockCode (string stockCode), который достаточно прост, но как вы собираетесь писать метод поиска элемента stockItem на основе комбинации свойств?Data Access Layer найти запись на основе нескольких свойств
Например, если я передаю объект StockFilter методу и задаю свойства, которые я хочу фильтровать, как я могу создать запрос Entity Framework для этого, не запутывая его? Или я должен просто получить все записи и отфильтровать их в бизнес-слое, который мне не подходит, потому что это означает, что я верну данные, которые мне не нужны.
Это метод я использую, чтобы получить свой запас деталь инвентарный номер:
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)
Есть ли образец или что-то, что я могу использовать для этого? Свойства предмета запаса могут включать такие вещи, как последняя дата продажи, количество проданных, диапазон цен и т. Д.
Умение использовать выражение> '? –
Fendy
Предположим, вы хотели бы использовать StockDTO в качестве параметра запроса для соответствия элементам в источнике данных. ** Первый вопрос **: вы уверены, что у КАЖДОГО свойства StockDTO есть «нулевое значение», которое вы можете использовать для его маркировки (= «не интересует это значение свойства в поиске»)? ** Второй вопрос **: можете ли вы использовать поддельный класс QueryStockDTO для использования в качестве объекта _query_ для StockDTO? Вы можете даже использовать микромапер для обмена свойствами между ними. –
Это вообще не обязательно должен быть объект DTO. Я на самом деле думаю, что теперь не может быть хорошей идеей использовать DTO, я думаю об этом. Да, я мог бы использовать какой-то объект Filter, который не является DTO и специально предназначен для запросов. Я изменил свой вопрос, чтобы использовать объект StockFilter вместо StockDTO – Asagohan