【发布时间】:2011-07-15 18:09:35
【问题描述】:
我一直在开发一个应用程序,我正在尝试应用 DDD 和其他工具(Nhibernate 和 asp.net MVC)。
在这个应用程序中,我们需要在存储库的 Person 实体中按名称实现“搜索”。所以,我们有一个存储库库(RepositoryBase 类),在这个实现中,我有一个适用于这个项目的通用方法。
public IEnumerable<T> FindAll(Expression<Func<T, bool>> condition) {
return Session.QueryOver<T>().Where(condition);
}
在我的 asp.net mvc 应用程序中,我们可以像这样使用它:
var list = _repositoryPerson.FindAll(x => x.Name == "Felipe");
另一方面,我们可以为此任务创建一个特定的方法(在 RepositroyPerson 类中),例如:
public IEnumerable<Person> FindByName(string name) {
return Session.QueryOver<Person>().Where(x => x.Name == name);
}
在我的 asp.net mvc 应用程序中,我们可以像这样使用它:
var list = _repositoryPerson.FindByName("Felipe");
我的问题是:
1 - 根据 DDD,满足此要求的推荐方法是什么?具体还是基类?
2 - 有人推荐了使用 Nhibernate QueryOver 的 Repository base (generic) 的一些不错的实现?
如果有人可以帮助我,我将不胜感激! 谢谢
更新:
例如,如果我需要一个复杂的搜索,例如组合条件...例如:姓名(可选)和年龄(可选)和城市(可选)和其他字段...每个字段都是可选的并且组合与其他领域!是否推荐使用表达式?您将如何实现此代码?
PS:对不起我的英语!
谢谢
【问题讨论】:
标签: .net nhibernate design-patterns domain-driven-design repository