3
之间的类型安全限制考虑以下QueryOver
(季度和中心的变量传递):使用NHibernate的QueryOver,你怎么可以加入红枣
QueryOver.Of<Activity>()
.Where(Restrictions.On<Activity>(a => a.StartDate).IsBetween(quarter.StartDate).And(quarter.EndDate) ||
Restrictions.On<Activity>(a => a.EndDate).IsBetween(quarter.StartDate).And(quarter.EndDate) ||
Restrictions.And(Restrictions.Lt("StartDate", quarter.StartDate), Restrictions.Gt("EndDate", quarter.EndDate))) //TODO: Refactor this to remove magic strings
.And(a => a.Centre == centre)
.OrderBy(a => a.Title).Asc;
这个查询作品完美,但我想更改以下限制删除魔术字符串:
Restrictions.And(Restrictions.Lt("StartDate", quarter.StartDate), Restrictions.Gt("EndDate", quarter.EndDate))
这里是(剪断,为了简洁)的实体:
public class Quarter
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public class Activity
{
public string Title { get; set; }
public Centre Centre { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public class Centre
{
public string Name { get; set; }
}
那么,使用新的QueryOver扩展将使我能够删除这些魔术字符串的类型安全方式是什么?
这样做的伎俩,谢谢! – andypike 2011-06-02 13:44:45
对不起,如果它看起来像挑剔:但不应该大于开始日期和小于结束日期? – bernhardrusch 2012-09-12 14:21:48
这也切断记录的日期完全等于start-或enddate。在大多数情况下,您想使用它: 'Restrictions.Le'和'Restrictions.Ge' – Hulvej 2014-04-21 13:23:43