|
From: <fab...@us...> - 2011-04-08 05:28:22
|
Revision: 5638
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5638&view=rev
Author: fabiomaulo
Date: 2011-04-08 05:28:16 +0000 (Fri, 08 Apr 2011)
Log Message:
-----------
Minor (reformatting)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Linq/DefaultQueryProvider.cs
Modified: trunk/nhibernate/src/NHibernate/Linq/DefaultQueryProvider.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Linq/DefaultQueryProvider.cs 2011-04-08 05:24:48 UTC (rev 5637)
+++ trunk/nhibernate/src/NHibernate/Linq/DefaultQueryProvider.cs 2011-04-08 05:28:16 UTC (rev 5638)
@@ -1,4 +1,3 @@
-using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
@@ -19,159 +18,160 @@
_session = session;
}
+ #region IQueryProvider Members
+
public object Execute(Expression expression)
{
- IQuery query;
- NhLinqExpression nhQuery;
- NhLinqExpression nhLinqExpression = PrepareQuery(expression, out query, out nhQuery);
-
+ IQuery query;
+ NhLinqExpression nhQuery;
+ NhLinqExpression nhLinqExpression = PrepareQuery(expression, out query, out nhQuery);
+
return ExecuteQuery(nhLinqExpression, query, nhQuery);
}
- public object ExecuteFuture(Expression expression)
- {
- IQuery query;
- NhLinqExpression nhQuery;
- NhLinqExpression nhLinqExpression = PrepareQuery(expression, out query, out nhQuery);
- return ExecuteFutureQuery(nhLinqExpression, query, nhQuery);
- }
+ public TResult Execute<TResult>(Expression expression)
+ {
+ return (TResult) Execute(expression);
+ }
- private NhLinqExpression PrepareQuery(Expression expression, out IQuery query, out NhLinqExpression nhQuery)
- {
- var nhLinqExpression = new NhLinqExpression(expression);
+ public IQueryable CreateQuery(Expression expression)
+ {
+ MethodInfo m = ReflectionHelper.GetMethodDefinition((DefaultQueryProvider p) => p.CreateQuery<object>(null)).MakeGenericMethod(expression.Type.GetGenericArguments()[0]);
- query = _session.CreateQuery(nhLinqExpression);
+ return (IQueryable) m.Invoke(this, new[] {expression});
+ }
- nhQuery = query.As<ExpressionQueryImpl>().QueryExpression.As<NhLinqExpression>();
+ public IQueryable<T> CreateQuery<T>(Expression expression)
+ {
+ return new NhQueryable<T>(this, expression);
+ }
- SetParameters(query, nhLinqExpression.ParameterValuesByName);
- SetResultTransformerAndAdditionalCriteria(query, nhQuery, nhLinqExpression.ParameterValuesByName);
- return nhLinqExpression;
- }
+ #endregion
- private object ExecuteFutureQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
- {
- MethodInfo method;
- if (nhLinqExpression.ReturnType == NhLinqExpressionReturnType.Sequence)
- {
- method = typeof (IQuery).GetMethod("Future").MakeGenericMethod(nhQuery.Type);
- }
- else
- {
- method = typeof(IQuery).GetMethod("FutureValue").MakeGenericMethod(nhQuery.Type);
- }
+ public object ExecuteFuture(Expression expression)
+ {
+ IQuery query;
+ NhLinqExpression nhQuery;
+ NhLinqExpression nhLinqExpression = PrepareQuery(expression, out query, out nhQuery);
+ return ExecuteFutureQuery(nhLinqExpression, query, nhQuery);
+ }
- var result = method.Invoke(query, new object[0]);
+ private NhLinqExpression PrepareQuery(Expression expression, out IQuery query, out NhLinqExpression nhQuery)
+ {
+ var nhLinqExpression = new NhLinqExpression(expression);
+ query = _session.CreateQuery(nhLinqExpression);
-
- if (nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer != null)
- {
- ((IDelayedValue) result).ExecuteOnEval = nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer;
- }
+ nhQuery = query.As<ExpressionQueryImpl>().QueryExpression.As<NhLinqExpression>();
- return result;
+ SetParameters(query, nhLinqExpression.ParameterValuesByName);
+ SetResultTransformerAndAdditionalCriteria(query, nhQuery, nhLinqExpression.ParameterValuesByName);
+ return nhLinqExpression;
+ }
- }
+ private object ExecuteFutureQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
+ {
+ MethodInfo method;
+ if (nhLinqExpression.ReturnType == NhLinqExpressionReturnType.Sequence)
+ {
+ method = typeof (IQuery).GetMethod("Future").MakeGenericMethod(nhQuery.Type);
+ }
+ else
+ {
+ method = typeof (IQuery).GetMethod("FutureValue").MakeGenericMethod(nhQuery.Type);
+ }
- private object ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
- {
- var results = query.List();
+ object result = method.Invoke(query, new object[0]);
- if (nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer != null)
- {
- try
- {
- return nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer.DynamicInvoke(results.AsQueryable());
- }
- catch (TargetInvocationException e)
- {
- throw e.InnerException;
- }
- }
- if (nhLinqExpression.ReturnType == NhLinqExpressionReturnType.Sequence)
- {
- return results.AsQueryable();
- }
+ if (nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer != null)
+ {
+ ((IDelayedValue) result).ExecuteOnEval = nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer;
+ }
- return results[0];
- }
-
- public TResult Execute<TResult>(Expression expression)
- {
- return (TResult) Execute(expression);
+ return result;
}
- public IQueryable CreateQuery(Expression expression)
+ private object ExecuteQuery(NhLinqExpression nhLinqExpression, IQuery query, NhLinqExpression nhQuery)
{
- var m = ReflectionHelper.GetMethodDefinition((DefaultQueryProvider p) => p.CreateQuery<object>(null)).MakeGenericMethod(expression.Type.GetGenericArguments()[0]);
+ IList results = query.List();
- return (IQueryable) m.Invoke(this, new[] {expression});
- }
+ if (nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer != null)
+ {
+ try
+ {
+ return nhQuery.ExpressionToHqlTranslationResults.PostExecuteTransformer.DynamicInvoke(results.AsQueryable());
+ }
+ catch (TargetInvocationException e)
+ {
+ throw e.InnerException;
+ }
+ }
- public IQueryable<T> CreateQuery<T>(Expression expression)
- {
- return new NhQueryable<T>(this, expression);
+ if (nhLinqExpression.ReturnType == NhLinqExpressionReturnType.Sequence)
+ {
+ return results.AsQueryable();
+ }
+
+ return results[0];
}
- static void SetParameters(IQuery query, IDictionary<string, Tuple<object, IType>> parameters)
+ private static void SetParameters(IQuery query, IDictionary<string, Tuple<object, IType>> parameters)
{
- foreach (var parameterName in query.NamedParameters)
+ foreach (string parameterName in query.NamedParameters)
{
- var param = parameters[parameterName];
+ Tuple<object, IType> param = parameters[parameterName];
- if (param.First == null)
- {
- if (typeof(ICollection).IsAssignableFrom(param.Second.ReturnedClass))
- {
- query.SetParameterList(parameterName, null, param.Second);
- }
- else
- {
- query.SetParameter(parameterName, null, param.Second);
- }
- }
- else
- {
- if (param.First is ICollection)
- {
- query.SetParameterList(parameterName, (ICollection) param.First);
- }
- else if (param.Second != null)
- {
- query.SetParameter(parameterName, param.First, param.Second);
- }
- else
- {
- query.SetParameter(parameterName, param.First);
- }
- }
+ if (param.First == null)
+ {
+ if (typeof (ICollection).IsAssignableFrom(param.Second.ReturnedClass))
+ {
+ query.SetParameterList(parameterName, null, param.Second);
+ }
+ else
+ {
+ query.SetParameter(parameterName, null, param.Second);
+ }
+ }
+ else
+ {
+ if (param.First is ICollection)
+ {
+ query.SetParameterList(parameterName, (ICollection) param.First);
+ }
+ else if (param.Second != null)
+ {
+ query.SetParameter(parameterName, param.First, param.Second);
+ }
+ else
+ {
+ query.SetParameter(parameterName, param.First);
+ }
+ }
}
}
- public void SetResultTransformerAndAdditionalCriteria(IQuery query, NhLinqExpression nhExpression, IDictionary<string, Tuple<object, IType>> parameters)
- {
- query.SetResultTransformer(nhExpression.ExpressionToHqlTranslationResults.ResultTransformer);
+ public void SetResultTransformerAndAdditionalCriteria(IQuery query, NhLinqExpression nhExpression, IDictionary<string, Tuple<object, IType>> parameters)
+ {
+ query.SetResultTransformer(nhExpression.ExpressionToHqlTranslationResults.ResultTransformer);
- foreach (var criteria in nhExpression.ExpressionToHqlTranslationResults.AdditionalCriteria)
- {
- criteria(query, parameters);
- }
- }
+ foreach (var criteria in nhExpression.ExpressionToHqlTranslationResults.AdditionalCriteria)
+ {
+ criteria(query, parameters);
+ }
+ }
}
- public class Tuple<T1, T2>
- {
- public T1 First { get; set; }
- public T2 Second { get; set; }
-
- }
+ public class Tuple<T1, T2>
+ {
+ public T1 First { get; set; }
+ public T2 Second { get; set; }
+ }
- public class Tuple<T1, T2, T3>
- {
- public T1 First { get; set; }
- public T2 Second { get; set; }
- public T3 Third { get; set; }
- }
+ public class Tuple<T1, T2, T3>
+ {
+ public T1 First { get; set; }
+ public T2 Second { get; set; }
+ public T3 Third { get; set; }
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|