protected virtual Expression VisitEntity(EntityExpression expr) { Expression e = Visit(expr.Expression); if (e != expr.Expression) { return new EntityExpression(expr.AssociationPath, expr.Alias, expr.Type, expr.MetaData, e); } return expr; }
protected PropertyAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression, NHibernateExpressionType nodeType) : base(nodeType, type) { if (String.IsNullOrEmpty(name)) throw new ArgumentNullException("name"); if (type == null) throw new ArgumentNullException("type"); if (nhibernateType == null) throw new ArgumentNullException("nhibernateType"); if (expression == null) throw new ArgumentNullException("expression"); _name = name; _expression = expression; _nhibernateType = nhibernateType; }
protected override Expression VisitCollectionAccess(CollectionAccessExpression expr) { EntityExpression elementExpression = expr.ElementExpression; if (elementExpression == null) return expr; string alias = FindCollectionAlias(elementExpression.Type); if (String.IsNullOrEmpty(alias)) return expr; elementExpression = new EntityExpression(elementExpression.AssociationPath, alias, elementExpression.Type, elementExpression.MetaData, elementExpression.Expression); return new CollectionAccessExpression(expr.Name, expr.Type, expr.NHibernateType, expr.Expression, elementExpression); }
protected override Expression VisitMemberAccess(MemberExpression expr) { expr = (MemberExpression)base.VisitMemberAccess(expr); IClassMetadata metaData = GetMetaData(expr.Type); if (metaData != null) { string associationPath = AssociationPathForEntity(expr); return new EntityExpression(associationPath, expr.Member.Name, expr.Type, metaData, expr.Expression, _addedAlias); } string memberName; IType nhibernateType; EntityExpression parentExpression = GetParentExpression(expr, out memberName, out nhibernateType); if (parentExpression != null) { if (nhibernateType.IsCollectionType) { CollectionType collectionType = (CollectionType)nhibernateType; IType nhElementType = collectionType.GetElementType((ISessionFactoryImplementor)_sessionFactory); System.Type elementType = nhElementType.ReturnedClass; IClassMetadata elementMetaData = GetMetaData(elementType); EntityExpression elementExpression = null; if (elementMetaData != null) elementExpression = new EntityExpression(null, memberName, elementType, elementMetaData, null, _addedAlias); return new CollectionAccessExpression(memberName, expr.Type, nhibernateType, parentExpression, elementExpression); } return new PropertyAccessExpression(memberName, expr.Type, nhibernateType, parentExpression); } return expr; }
protected PropertyAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression, NHibernateExpressionType nodeType) : base(nodeType, type) { if (String.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } if (type == null) { throw new ArgumentNullException("type"); } if (nhibernateType == null) { throw new ArgumentNullException("nhibernateType"); } if (expression == null) { throw new ArgumentNullException("expression"); } _name = name; _expression = expression; _nhibernateType = nhibernateType; }
private bool IsRootEntity(EntityExpression expr) { var nhExpression = expr.Expression as NHibernateExpression; if (nhExpression != null) return false; if (expr.Type != rootCriteria.GetRootType()) return false; return true; }
protected override Expression VisitEntity(EntityExpression expr) { expr = (EntityExpression)base.VisitEntity(expr); if (currentCriteria.GetCriteriaByAlias(expr.Alias) != null || !IsRootEntity(expr)) { if (!String.IsNullOrEmpty(expr.AssociationPath)) currentCriteria = EnsureCriteria(expr.AssociationPath, expr.Alias); ResetMemberName(expr.Alias + "."); } currentAssociationPath = expr.AssociationPath; currentExpression = expr; isQueringEntity = true; return expr; }
protected override Expression VisitEntity(EntityExpression expr) { Type = BinaryCriterionType.Property; Name = MemberNameVisitor.GetMemberName(rootCriteria, expr); return expr; }
public PropertyAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression) : this(name, type, nhibernateType, expression, NHibernateExpressionType.PropertyAccess) { }
public CollectionAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression, EntityExpression elementExpression) : base(name, type, nhibernateType, expression, NHibernateExpressionType.CollectionAccess) { _elementExpression = elementExpression; }
protected override Expression VisitEntity(EntityExpression expr) { if (_rootCriteria.GetCriteriaByAlias(expr.Alias) != null) { _transformer = new LinqJoinResultsTransformer(expr.Type); } return expr; }
public PropertyAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression) : this(name, type, nhibernateType, expression, NHibernateExpressionType.PropertyAccess) { }
protected override Expression VisitEntity(EntityExpression expr) { Type = BinaryCriterionType.Property; return expr; }
protected override Expression VisitEntity(EntityExpression expr) { this.Expression = expr; if (_findFirstEntity) return expr; return base.VisitEntity(expr); }
public CollectionAccessExpression(string name, System.Type type, IType nhibernateType, EntityExpression expression, EntityExpression elementExpression) : base(name, type, nhibernateType, expression, NHibernateExpressionType.CollectionAccess) { _elementExpression = elementExpression; }