nHibernate 3 - 带DateTime的QueryOver

Gui*_*Gui 4 nhibernate nhibernate-3

我正在尝试编写一个查询以使用DateTime进行选择.Year作为where参数,但我从nunit收到此错误:

NHibernate.QueryException:无法解析属性:Register.Year of:Estudantino.Domain.Events

在类Event中,我有一个名为Register的属性作为DateTime类型.

public virtual DateTime Registada { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是返回错误的方法:

  using (ISession session = NHibernateHelper.OpenSession())
        {
            return session.QueryOver<Evento>()
                .Where(x => x.Register.Year == year)
                .List();
        }
Run Code Online (Sandbox Code Playgroud)

变量year的类型为int,已传递给方法.

有谁知道我做错了什么?我的数据库服务器是SQL Server 2005 Express.

Die*_*hon 7

QueryOver无法解决类似问题DateTime.Year.

使用LINQ代替:

return session.Query<Evento>()
              .Where(x => x.Register.Year == year)
              .ToList();
Run Code Online (Sandbox Code Playgroud)


AUS*_*RJL 5

在QueryOver中,您可以说:

dateTimeColumn.YearPart() == 1999
Run Code Online (Sandbox Code Playgroud)

还有其他的扩展方法:MonthPart(),DayPart(),等.