本文整理汇总了C#中NHibernate.Hql.Ast.HqlTreeBuilder.Alias方法的典型用法代码示例。如果您正苦于以下问题:C# HqlTreeBuilder.Alias方法的具体用法?C# HqlTreeBuilder.Alias怎么用?C# HqlTreeBuilder.Alias使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NHibernate.Hql.Ast.HqlTreeBuilder
的用法示例。
在下文中一共展示了HqlTreeBuilder.Alias方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BuildHql
///<summary>
///
///</summary>
///<param name="method"></param>
///<param name="targetObject">Should be an ISecurable</param>
///<param name="arguments">Not sure what the heck arg[0] is, but arg[1] is the entityName</param>
///<param name="treeBuilder"></param>
///<param name="visitor"></param>
///<returns></returns>
public override HqlTreeNode BuildHql(
MethodInfo method,
Expression targetObject,
ReadOnlyCollection<Expression> arguments,
HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
// arguments[0] is a System.Linq.Expressions.Expression
// arguments[1] is our constant value
var expr = arguments[0];
// This doesn't really help us right now, but log it just in case...
if (expr is Remotion.Linq.Clauses.Expressions.QuerySourceReferenceExpression)
{
Console.WriteLine(
"ReferencedQuerySource: {0}",
((Remotion.Linq.Clauses.Expressions.QuerySourceReferenceExpression)expr).ReferencedQuerySource
);
}
// Getting somewhere?
// expr.Type is Spc.Ofp.Tubs.DAL.Entities.Trip
Console.WriteLine("Expression type: {0}", expr.Type);
// HqlAlias is "AccessControl" (entity property), "ace" (name used in expression) ?
// HqlExpression is equality expression ?
var aceAlias = treeBuilder.Alias("AccessControl as ace");
var entityName = ((ConstantExpression)arguments[1]).Value;
Console.WriteLine("entityName: {0}", entityName);
var equality = treeBuilder.Equality(
treeBuilder.Alias("ace.EntityName"),
treeBuilder.Constant(entityName)
);
var joinExpression = treeBuilder.Join(equality, aceAlias);
// This doesn't actually do anything...
return visitor.Visit(expr).AsExpression();
/*
* var dc =
DetachedCriteria.For<T>()
.CreateAlias("AccessControl", "ace", JoinType.InnerJoin)
.Add(NHibernate.Criterion.Expression.Eq("ace.EntityName", this._entityName));
*/
}
示例2: BuildHql
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
{
// All has two arguments. Arg 1 is the source and arg 2 is the predicate
var predicate = (LambdaExpression) arguments[1];
return treeBuilder.BooleanNot(
treeBuilder.Exists(
treeBuilder.Query(
treeBuilder.SelectFrom(
treeBuilder.From(
treeBuilder.Range(
visitor.Visit(arguments[0]),
treeBuilder.Alias(predicate.Parameters[0].Name))
)
),
treeBuilder.Where(
treeBuilder.BooleanNot(visitor.Visit(arguments[1]).AsBooleanExpression())
)
)
)
);
}