【发布时间】:2009-01-13 21:50:11
【问题描述】:
【问题讨论】:
标签: nhibernate search
【问题讨论】:
标签: nhibernate search
如果我们有一个复杂的动态搜索,我们通常会构造一个 SearchParameter 对象,然后将它传递给一个方法,该方法将为我们构建我们的条件。
例如,如果我们正在搜索一个人,我们可能有一个如下所示的搜索对象:
public class PersonSearchParameters
{
public string FirstName {get; set;}
public string LastName {get; set;}
public ICriteria GetSearchCriteria()
{
DetachedCriteria query = DetachedCriteria.For(typeof (Person));
//Add query parameters
Return query;
}
}
然后对于每种类型的搜索,我们将能够从类中创建单个条件,或者我们可以有多个搜索参数类并将它们链接在一起
【讨论】:
我们使用 HQL,但我们仍在尝试围绕 Criteria API 进行复杂查询。使用 HQL 时,我们必须管理大量重复。
【讨论】:
我用的 Ayende 差不多,只是有点复杂,你想做什么你不能用它做什么?
基本上我们添加的是我们有一个接口,我们在其中定义了我们想要搜索的所有字段,当我们即将进行搜索时我们调用它,这意味着我们可以轻松更改我们正在搜索的内容。
此外,我们在项目中使用了 Active Record(在 Hibernate 之上),它非常酷,大量任务得到简化,但缺少文档有时会造成伤害 加油
【讨论】: