Hi,
I submitted a pull request for https://nhibernate.jira.com/browse/NH-2140.
The idea is to have all query APIs (LINQ, HQL, SQL, Criteria and QueryOver)
support a base interface, which I called IQueryOptions.
This interface has common methods for paging, limiting the number of
records, setting read only, setting lock mode, setting a result
transformer, queuing to future queries, and performing the actual query. It
is defined as:
public interface IQueryOptions
{
IList List();
void List(IList list);
IList<T> List<T>();
object UniqueResult();
T UniqueResult<T>();
IQueryOptions SetFirstResult(int firstResult);
IQueryOptions SetFetchSize(int fetchSize);
IQueryOptions SetReadOnly(bool readOnly);
IQueryOptions SetCacheable(bool cacheable);
IQueryOptions SetCacheRegion(string cacheRegion);
IQueryOptions SetTimeout(int timeout);
IQueryOptions SetMaxResults(int maxResults);
IQueryOptions SetLockMode(string alias, LockMode lockMode);
IQueryOptions SetResultTransformer(IResultTransformer
resultTransformer);
IFutureValue<T> FutureValue<T>();
IEnumerable<T> Future<T>();
}
Because it was required for LINQ, I also included
https://nhibernate.jira.com/browse/NH-3299,
https://nhibernate.jira.com/browse/NH-3470
and https://nhibernate.jira.com/browse/NH-2285.
It allows doing these without caring what API is actually being used:
IQueryOptions query = //...
query = query.SetReadOnly(true);
query = query.SetFirstResult(1);
query = query.SetMaxResults(1);
query = query.SetFetchSize(100);
query = query.SetLockMode(alias, LockMode.Upgrade);
query = query.SetResultTransformer(transformer);
var result = query.List<Simple>();
What do you think? Let me hear your comments.
RP
--
---
You received this message because you are subscribed to the Google Groups
"nhibernate-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.