I general, I like the idea, but I don't think that the Linq interface should be polluted with things that is already is part of the IQueryable contract. It's just confusing.
/G 2014-11-20 21:21 GMT+01:00 Alexander Zaytsev <haz...@gmail.com>: > Hi Ricardo, > > I would prefer to focus on 4.1.0 issues and bugs rather than new > functionality. > > Best Regards, > Alexander > > On Fri, Nov 21, 2014 at 6:44 AM, Ricardo Peres <rjpe...@gmail.com> wrote: > >> 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 nhibernate-development+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > > --- > 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 nhibernate-development+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- --- 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 nhibernate-development+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.