WhereStringIsNotNullOrEmpty
Where string is not null or empty extension method for NHibernate 3.0 and its new query API QueryOver.
Source
public static IQueryOver<TRoot, TSubType> WhereStringIsNotNullOrEmpty<TRoot, TSubType>(this IQueryOver<TRoot, TSubType> query, Expression<Func<TRoot, string>> expression)
{
	return WhereStringIsNotNullOrEmpty(query, expression.Body);            
}
public static IQueryOver<TRoot, TSubType> WhereStringIsNotNullOrEmpty<TRoot, TSubType>(this IQueryOver<TRoot, TSubType> query, Expression<Func<string>> expression)
{
	return WhereStringIsNotNullOrEmpty(query, expression.Body);            
}
private static IQueryOver<TRoot, TSubType> WhereStringIsNotNullOrEmpty<TRoot, TSubType>(IQueryOver<TRoot, TSubType> query, System.Linq.Expressions.Expression expression)
{
	var projectionInfo = ExpressionProcessor.FindMemberProjection(expression);
	var property = projectionInfo.AsProjection();
	var criteria = Restrictions.Or(Restrictions.IsNull(property), Restrictions.Eq(Projections.SqlFunction("trim", NHibernateUtil.String, property), ""));
	return query.Where(Restrictions.Not(criteria));
}Example
public class TeamEmployeeRepository : Repository<TeamEmployee>, ITeamEmployeeRepository
{
    public IEnumerable<TeamEmployee> GetEmployees()
    {
        return GetSession().QueryOver<TeamEmployee>()
						   .WhereStringIsNotNullOrEmpty(p => p.Name)
					       .Future();
    }
}
Or by alias...
public class TeamEmployeeRepository : Repository<TeamEmployee>, ITeamEmployeeRepository
{
    public IEnumerable<TeamEmployee> GetEmployees()
    {
		TeamEmployee TeamEmployeeAlias = null; 
        return GetSession().QueryOver<TeamEmployee>(() => TeamEmployeeAlias)
						   .WhereStringIsNotNullOrEmpty(() => TeamEmployeeAlias.Name)
					       .Future();
    }
}Author: Richard
Submitted on: 25 jun. 2016
Language: C#
Type: WhereStringIsNotNullOrEmpty
Views: 4121