Использование current_timestamp в синтаксисе NHibernate QueryOver - PullRequest
3 голосов
/ 27 мая 2011

Можно ли запросить использование current_timestamp в любых других методах запросов nhibernate, кроме SQL и HQL?

Я думал о создании некоторого типа класса IUserType из DbDateTime или чего-то еще для решения проблемы, но не знаю точно, как это сделать.

У кого-нибудь есть идеи?

пример того, что я хочу:

  session.QueryOver<User>()
         .Where(u => u.CreatedOn > current_timestamp)
         .List();

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Вы можете использовать функции IProjection и SQL в API QueryOver следующим образом:

var result = session.QueryOver<User>()
             .Where(Restrictions.GtProperty(
                Projections.Property<User>(u => u.CreatedOn), 
                Projections.SqlFunction("current_timestamp", new NHibernate.Type.TimestampType())))
             .List();

Это приведет к следующему SQL:

SELECT this_.... FROM [User] this_ WHERE this_.CreatedOn > sysdatetime() ; 
0 голосов
/ 27 мая 2011

Это может быть неприменимо для вашего случая, но это может сработать

session.QueryOver<User>()
     .Where(u => u.CreatedOn > DateTime.Now)
     .List();
...