|
From: <ric...@us...> - 2011-02-26 10:38:13
|
Revision: 5400
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5400&view=rev
Author: ricbrown
Date: 2011-02-26 10:38:07 +0000 (Sat, 26 Feb 2011)
Log Message:
-----------
Fix NH-2543 (IQueryOver support is not implemented for IStatelessSession)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/IStatelessSession.cs
trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
Modified: trunk/nhibernate/src/NHibernate/IStatelessSession.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 05:56:26 UTC (rev 5399)
+++ trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2011-02-26 10:38:07 UTC (rev 5400)
@@ -1,6 +1,6 @@
using System;
using System.Data;
-
+using System.Linq.Expressions;
using NHibernate.Engine;
namespace NHibernate
@@ -194,6 +194,20 @@
ICriteria CreateCriteria(string entityName, string alias);
/// <summary>
+ /// Creates a new <c>IQueryOver<T></c> for the entity class.
+ /// </summary>
+ /// <typeparam name="T">The entity class</typeparam>
+ /// <returns>An ICriteria<T> object</returns>
+ IQueryOver<T,T> QueryOver<T>() where T : class;
+
+ /// <summary>
+ /// Creates a new <c>IQueryOver<T></c> for the entity class.
+ /// </summary>
+ /// <typeparam name="T">The entity class</typeparam>
+ /// <returns>An ICriteria<T> object</returns>
+ IQueryOver<T,T> QueryOver<T>(Expression<Func<T>> alias) where T : class;
+
+ /// <summary>
/// Create a new instance of <see cref="ISQLQuery"/> for the given SQL query string.
/// Entities returned by the query are detached.
/// </summary>
Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 05:56:26 UTC (rev 5399)
+++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 10:38:07 UTC (rev 5400)
@@ -2,10 +2,11 @@
using System.Collections;
using System.Collections.Generic;
using System.Data;
-
+using System.Linq.Expressions;
using NHibernate.AdoNet;
using NHibernate.Cache;
using NHibernate.Collection;
+using NHibernate.Criterion;
using NHibernate.Engine;
using NHibernate.Engine.Query;
using NHibernate.Engine.Query.Sql;
@@ -915,6 +916,25 @@
}
}
+ public IQueryOver<T,T> QueryOver<T>() where T : class
+ {
+ using (new SessionIdLoggingContext(SessionId))
+ {
+ CheckAndUpdateSessionStatus();
+ return new QueryOver<T,T>(new CriteriaImpl(typeof(T), this));
+ }
+ }
+
+ public IQueryOver<T,T> QueryOver<T>(Expression<Func<T>> alias) where T : class
+ {
+ using (new SessionIdLoggingContext(SessionId))
+ {
+ CheckAndUpdateSessionStatus();
+ string aliasPath = ExpressionProcessor.FindMemberExpression(alias.Body);
+ return new QueryOver<T,T>(new CriteriaImpl(typeof(T), aliasPath, this));
+ }
+ }
+
/// <summary>
/// Begin a NHibernate transaction
/// </summary>
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2011-02-26 05:56:26 UTC (rev 5399)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2011-02-26 10:38:07 UTC (rev 5400)
@@ -552,6 +552,34 @@
}
}
+ [Test]
+ public void StatelessSession()
+ {
+ using (var ss = sessions.OpenStatelessSession())
+ {
+ using (var tx = ss.BeginTransaction())
+ {
+ var person = new Person() { Name = "test1" };
+ ss.Insert(person);
+
+ var statelessPerson1 =
+ ss.QueryOver<Person>()
+ .List()
+ [0];
+
+ Assert.That(statelessPerson1.Id, Is.EqualTo(person.Id));
+
+ var statelessPerson2 =
+ QueryOver.Of<Person>()
+ .GetExecutableQueryOver(ss)
+ .List()
+ [0];
+
+ Assert.That(statelessPerson2.Id, Is.EqualTo(person.Id));
+ }
+ }
+ }
+
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|