能用LinqToNhibernate还是很爽的~~能获得编译时类型检查就不说了,就连where子句的复用都比用HQL爽快很多~~~
比如我有这种有时间限制的实体
public interface ITerminableEntity
{
DateTime StartDate { get; }
DateTime? EndDate { get; }
}
{
DateTime StartDate { get; }
DateTime? EndDate { get; }
}
然后我给实现这种接口的实体统一实现时间判断的where子句
public static class TerminableEntityDAOImpl
{
public static Expression<Func<TEntity, bool>> DateAvailable<TEntity>(this CommonDAOImpl<TEntity> dao, DateTime dt)
where TEntity : ITerminableEntity, IEntity
{
return entity => dt >= entity.StartDate && (!entity.EndDate.HasValue || entity.EndDate.Value > dt);
}
}
{
public static Expression<Func<TEntity, bool>> DateAvailable<TEntity>(this CommonDAOImpl<TEntity> dao, DateTime dt)
where TEntity : ITerminableEntity, IEntity
{
return entity => dt >= entity.StartDate && (!entity.EndDate.HasValue || entity.EndDate.Value > dt);
}
}