1

你会怎么做

Select *
from Personnel p
where p.LastName + ', ' + p.FirstName + ' ' + p.MiddleInitial LIKE @Employee + '%'

使用 NHibernate (3.0)?到目前为止,我已经尝试过

personnel.QueryOver<Personnel>()
    .WhereRestrictionOn( x => x.LastName + ', ' + x.FirstName + ' ' + x.MiddleInitial)
    .IsLike(employeeName, MatchMode.Start)

无济于事。

4

2 回答 2

2

如果您使用 将这三列映射为单个属性Formula,它将起作用:

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table("Employees");

        Id(x => x.Id);
        Map(x => x.Name)
          .Formula("UPPER(LTRIM(RTRIM(FirstName + ' ' + MiddleName + ' ' + LastName)))");

        // etc.
    }
}

这是一个使用 SQL Server 的示例,在 Oracle 中,您可以切换'for|和 ditch LTRIMand RTRIM

于 2011-05-26T12:46:25.617 回答
0
ICriteria criteria = session.CreateCriteria(typeof(IPersonnel));
        criteria.CreateCriteria("Personnel", "p");
        criteria.Add(Restrictions.Like("p.LastName + p.FirstName + p.MiddleInitial", employeeName)); 
        criteria.SetResultTransformer(CriteriaSpecification.DistinctRootEntity);
        return criteria.List<IPersonnel>();
于 2011-05-26T09:29:34.210 回答