0

我正在用 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)

有没有我可以使用的模式或其他东西?库存项目属性可能包括最后销售日期、销售数量、价格范围等。

4

1 回答 1

0

我发现了这个 -使用实体框架创建动态查询

我相信这会解决我寻找库存商品的问题。但是,如果我必须检查我可能想要过滤的每个属性并且必须为每个实体 DAL 执行此操作,我可以看到我的方法变得巨大。

如果有更好的方法,请告诉我。

Expression<Func<T, bool>> 

通用存储库模式对吗?就最佳实践和代码解耦/可维护性而言,这是否比给定链接中的解决方案更好?

于 2013-05-30T11:35:27.127 回答