It happenin provider. You can execute the linq first and then apply Single
>   var query = (from a in session.Query<OlaUser>()
>                              where a.Username == username
>                             select a).ToList();
> var user = query.Single();

--
Fabio Maulo


El 05/07/2010, a las 12:26, andrew6072 <[email protected]> escribió:

> How do I use the SetMaxResults in the case  ? Or is that something the
> happens somewhere in the linq provider ?
>
>        public OlaUser GetByUsername(string username)
>        {
>            var session = GetSession();
>            var query = (from a in session.Query<OlaUser>()
>                              where a.Username == username
>                             select a);
>            var user = query.Single();
>            return user;
>        }
>
> Andrew
>
> On Jul 5, 4:16 pm, Diego Mijelshon <[email protected]> wrote:
>> IIRC, Single/SingleOrDefault use SetMaxResults(2), and then checks that a
>> single record is returned...
>>
>>    Diego
>>
>>
>>
>> On Mon, Jul 5, 2010 at 10:19, Fabio Maulo <[email protected]> wrote:
>>> For "First" and "FirstOrDefault" we can apply SetMaxResults(1) ... and fix
>>> the bug (please check last JIRAs and add a new one if you can't find an
>>> existing)
>>
>>> For "Single" and "SingleOrDefault" we *shouldn't* apply SetMaxResults(1)
>>> because doing so we will change the "Single" behavior (it should throw
>>> exception when there are more than one results)
>>
>>> On Mon, Jul 5, 2010 at 10:11 AM, andrew6072 
>>> <[email protected]>wrote:
>>
>>>> Hi Fabio,
>>
>>>> What do you mean by changing the meaning of Single ?
>>
>>>> Oh and It also happens with First(), and SingleOrDefault() as well
>>
>>>> It seems to be something to do with this call
>>
>>>> bool useLimit = UseLimit(selection, dialect);
>>>> when I use Query<> it returns true, and if I use QueryOver<> it return
>>>> false ???
>>
>>>> I don't really understand how it all works but I've noticed the
>>>> following.
>>>> when its called using Query<> selection.firstrow = -1, and
>>>> selection.MaxRows = 1
>>
>>>> but when its called from QueryOver<> selection.FirstRow = 0, and
>>>> selection.Maxrows = -1
>>
>>>> Andrew
>>
>>>> On Jul 5, 12:38 pm, Fabio Maulo <[email protected]> wrote:
>>>>> Confirmed, we have a bug.
>>>>> We are changing the meaning of Single.
>>
>>>>> On Mon, Jul 5, 2010 at 8:35 AM, Fabio Maulo <[email protected]>
>>>> wrote:
>>>>>> If our provider creates a paginated query for the method "Single" we
>>>> have a
>>>>>> bug.
>>
>>>>>> On Mon, Jul 5, 2010 at 8:06 AM, andrew6072 <
>>>> [email protected]>wrote:
>>
>>>>>>> Hi Fabio,
>>
>>>>>>> I think the exception got chopped off, this is the full exception.
>>
>>>>>>> [SQL: select * from ( select olauser0_.USER_ID as USER1_57_,
>>>>>>> olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as
>>>>>>> EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_, olauser0_.PASSWORD as
>>>>>>> PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_,
>>>>>>> olauser0_.PASSWORD_ANSWER as PASSWORD7_57_, olauser0_.IS_APPROVED as
>>>>>>> IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_, olauser0_.LAST_LOGON_DATE
>>>>>>> as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_,
>>>>>>> olauser0_.LAST_ACTIVITY_DATE as LAST12_57_,
>>>>>>> olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_,
>>>>>>> olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from OLA_USERS olauser0_
>>>>>>> where (olauser0_.USERNAME is null) and (:p0 is null) or
>>>>>>> olauser0_.USERNAME=:p0 ) where rownum <=:p2] --->
>>>>>>> Oracle.DataAccess.Client.OracleException ORA-01008: not all variables
>>>>>>> bound    at
>>>>>>> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
>>>>>>> errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx*
>>>>>>> pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
>>>>>>>   at Oracle.DataAccess.Client.OracleException.HandleError(Int32
>>>>>>> errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx,
>>>>>>> OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
>>>>>>>   at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean
>>>>>>> requery, Boolean fillRequest, CommandBehavior behavior)
>>>>>>>   at
>>
>>>> Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior
>>>>>>> behavior)
>>>>>>>   at
>>>>>>> System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>>>>>>>   at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
>>>>>>> in
>>>> d:\dev\oss\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line
>>>>>>> 242
>>>>>>>   at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
>>>>>>> autoDiscoverTypes, Boolean callable, RowSelection selection,
>>>>>>> ISessionImplementor session) in d:\dev\oss\nhibernate\src\NHibernate
>>>>>>> \Loader\Loader.cs:line 1325
>>>>>>>   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
>>>>>>> QueryParameters queryParameters, Boolean returnProxies) in d:\dev\oss
>>>>>>> \nhibernate\src\NHibernate\Loader\Loader.cs:line 401
>>>>>>>   at
>>
>>>> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImp
>>>>  lementor
>>>>>>> session, QueryParameters queryParameters, Boolean returnProxies) in
>>>> d:
>>>>>>> \dev\oss\nhibernate\src\NHibernate\Loader\Loader.cs:line 236
>>>>>>>   at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
>>>>>>> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src
>>>>>>> \NHibernate\Loader\Loader.cs:line 1653
>>>>>>>    --- End of inner exception stack trace ---
>>>>>>>    at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
>>>>>>> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src
>>>>>>> \NHibernate\Loader\Loader.cs:line 1662
>>>>>>>   at
>>>>>>> NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor
>>>>>>> session, QueryParameters queryParameters) in
>>>> d:\dev\oss\nhibernate\src
>>>>>>> \NHibernate\Loader\Loader.cs:line 1577
>>>>>>>   at NHibernate.Loader.Loader.List(ISessionImplementor session,
>>>>>>> QueryParameters queryParameters, ISet`1 querySpaces, IType[]
>>>>>>> resultTypes) in d:\dev\oss\nhibernate\src\NHibernate\Loader
>>>>>>> \Loader.cs:line 1567
>>>>>>>   at
>>>>>>> NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor
>>>>>>> session, QueryParameters queryParameters) in
>>>> d:\dev\oss\nhibernate\src
>>>>>>> \NHibernate\Hql\Ast\ANTLR\Loader\QueryLoader.cs:line 297
>>>>>>>   at
>>>>>>> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor
>>>>>>> session, QueryParameters queryParameters) in
>>>> d:\dev\oss\nhibernate\src
>>>>>>> \NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 107
>>>>>>>   at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters
>>>>>>> queryParameters, ISessionImplementor session, IList results) in
>>>> d:\dev
>>>>>>> \oss\nhibernate\src\NHibernate\Engine\Query\HQLQueryPlan.cs:line 105
>>>>>>>   at NHibernate.Impl.SessionImpl.List(IQueryExpression
>>>>>>> queryExpression, QueryParameters queryParameters, IList results) in
>>>> d:
>>>>>>> \dev\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 676
>>>>>>>   at NHibernate.Impl.SessionImpl.List(IQueryExpression
>>>>>>> queryExpression, QueryParameters parameters) in d:\dev\oss\nhibernate
>>>>>>> \src\NHibernate\Impl\SessionImpl.cs:line 655
>>>>>>>   at NHibernate.Impl.ExpressionQueryImpl.List() in d:\dev\oss
>>>>>>> \nhibernate\src\NHibernate\Impl\ExpressionQueryImpl.cs:line 63
>>>>>>>   at NHibernate.Linq.NhQueryProvider.Execute(Expression expression)
>>>>>>> in d:\dev\oss\nhibernate\src\NHibernate\Linq\NhQueryProvider.cs:line
>>>>>>> 31
>>>>>>>   at NHibernate.Linq.NhQueryProvider.Execute[TResult](Expression
>>>>>>> expression) in d:\dev\oss\nhibernate\src\NHibernate\Linq
>>>>>>> \NhQueryProvider.cs:line 55
>>>>>>>   at System.Linq.Queryable.Single[TSource](IQueryable`1 source)
>>>>>>>   at
>>
>>>> OlaCommon.Data.Repository.NHibernate.UserRepository.GetByUsername(String
>>>>>>> username) in
>>>> d:\dev\tfs\OlaCommon\OlaCommon.Data\Repository\NHibernate
>>>>>>> \UserRepository.cs:line 27
>>>>>>>   at
>>
>>>> OlaMonitor.Infrastructure.NHibernateMembershipProvider.ValidateUser(String
>>>>>>> username, String password) in d:\dev\tfs\OlaMonitor\OlaMonitor
>>>>>>> \Infrastructure\NHibernateMembershipProvider.cs:line 248
>>
>>>>>>> Validateuser calls the following method
>>>>>>>        public OlaUser GetByUsername(string username)
>>>>>>>        {
>>>>>>>            var session = GetSession();
>>>>>>>             var query = (from a in session.Query<OlaUser>()
>>>>>>>                              where a.Username == username
>>>>>>>                             select a);
>>>>>>>            var user = query.Single();
>>>>>>>             return user;
>>>>>>>        }
>>
>>>>>>> Do you need anything else ?
>>
>>>>>>> Andrew
>>
>>>>>>> On Jul 5, 11:43 am, Fabio Maulo <[email protected]> wrote:
>>>>>>>> Please send us something else... In some point you are forcing the
>>>>>>>> pagination of the query.
>>
>>>>>>>> --
>>>>>>>> Fabio Maulo
>>
>>>>>>>> El 05/07/2010, a las 07:16, andrew6072 <
>>>> [email protected]>
>>>>>>> escribió:
>>
>>>>>>>>> Hi,
>>
>>>>>>>>> Not sure if I've done something wrong but I can't get this to
>>>> work, if
>>>>>>>>> I look at the query I can see one object, as soon as it hits the
>>>>>>>>> query.single() it bombs with the stack below, am I missing
>>>> something ?
>>>>>>>>> Not sure if it makes any difference but I'm using fluent to
>>>> create my
>>>>>>>>> mappings.
>>
>>>>>>>>>            var query = (from a in session.Query<OlaUser>()
>>>>>>>>>                       where a.Username == username
>>>>>>>>>                       select a);
>>
>>>>>>>>>            var user = query.Single();
>>
>>>>>>>>> Andrew
>>
>>>>>>>>> [ select * from ( select olauser0_.USER_ID as USER1_57_,
>>>>>>>>> olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as
>>>>>>>>> EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_, olauser0_.PASSWORD
>>>> as
>>>>>>>>> PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_,
>>>>>>>>> olauser0_.PASSWORD_ANSWER as PASSWORD7_57_, olauser0_.IS_APPROVED
>>>> as
>>>>>>>>> IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_,
>>>> olauser0_.LAST_LOGON_DATE
>>>>>>>>> as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_,
>>>>>>>>> olauser0_.LAST_ACTIVITY_DATE as LAST12_57_,
>>>>>>>>> olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_,
>>>>>>>>> olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from USERS olauser0_
>>>> where
>>>>>>>>> (olauser0_.USERNAME is null) and (:p0 is null) or
>>>>>>>>> olauser0_.USERNAME=:p0 ) where rownum <=:p2 ]
>>>>>>>>>  Name:p1 - Value:andrewb
>>
>>>>>>>>> Oracle.DataAccess.Client.OracleException ORA-01008: not all
>>>> variables
>>>>>>>>> bound    at
>>
>> ...
>>
>> read more »- Hide quoted text -
>>
>> - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google Groups 
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to