民间,
我在思考如何让老板相信存储库模式的好处;特别是遇到以下问题后。
这是冰淇淋库中的一种方法
public IEnumerable<Icecream> FindWhere(Func<Icecream, bool> predicate)
{
return (from item in nhibernateSession.Linq<Icecream>() select item).AsQueryable<Icecream>()
.Where(predicate)
.OrderByDescending(c => c.Id).ToList();
}
这是对上述存储库函数的调用
Icecream ce = qRepository.FindWhere(
(q) =>
{
return q.Id == 10;
}
).FirstOrDefault<Icecream>();
困境是在应用'谓词'之前,数据库中的所有冰淇淋都会被加载到内存中。至少这是我从生成的SQL中推断出来的。那是一个很大的'不,不'。
那么,我怎样才能使某人相信具有上述性质的存储库模式值得追求。是否有解决方法来避免上述问题?
感谢 多尔曼
答案 0 :(得分:0)
存储库模式不承担任何类型的IOC容器。您可以使用从平面文件到内存列表到存储过程的任何持久性机制来实现模式。您的问题在于您的IOC容器或LINQ。