From: <te...@us...> - 2008-09-20 16:51:00
|
Revision: 3777 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3777&view=rev Author: tehlike Date: 2008-09-20 16:50:54 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Minor modifications to PropertyExpressions Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/PropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/SimplePropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs trunk/nhibernate/src/NHibernate.Linq/Visitors/SqlExpressionTranslator.cs Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -10,7 +10,7 @@ public class CollectionPropertyExpression : PropertyExpression { public CollectionPropertyExpression(string name, System.Type type, Expression source, IType nhibernateType) - : base(name, type, source, nhibernateType) + : base(name,NHExpressionType.CollectionProperty, type, source, nhibernateType) { } Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -11,12 +11,12 @@ { public ComponentPropertyExpression(string name, string[] columns, System.Type type, Expression source, IType nhibernateType) - : base(name, type, source, nhibernateType) + : base(name,NHExpressionType.ComponentProperty, type, source, nhibernateType) { this.Columns = columns; } public string[] Columns { get; protected set; } - public ComponentType ComponentType { get { base.NHibernateType as ComponentType; } } + public ComponentType ComponentType { get { return base.NHibernateType as ComponentType; } } } } Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -5,7 +5,9 @@ QuerySource = 100, Select, Projection, - Property, + SimpleProperty, + ComponentProperty, + CollectionProperty, Order, } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/PropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/PropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/PropertyExpression.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -5,14 +5,8 @@ { public abstract class PropertyExpression : NHExpression { - public PropertyExpression(string name, System.Type type, Expression source, IType nhibernateType) - : this(name, type, source, nhibernateType, NHExpressionType.Property) - { - } - - protected PropertyExpression(string name, System.Type type, Expression source, IType nhibernateType, - NHExpressionType nodeType) + protected PropertyExpression(string name,NHExpressionType nodeType, System.Type type, Expression source, IType nhibernateType) : base(nodeType, type) { NHibernateType = nhibernateType; Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/SimplePropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/SimplePropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/SimplePropertyExpression.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -10,7 +10,7 @@ public class SimplePropertyExpression:PropertyExpression { public SimplePropertyExpression(string name,string column, System.Type type, Expression source, IType nhibernateType) - : base(name, type, source, nhibernateType) + : base(name,NHExpressionType.SimpleProperty, type, source, nhibernateType) { this.Column = column; } Modified: trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -21,13 +21,18 @@ return VisitSelect((SelectExpression) exp); case NHExpressionType.Projection: return VisitProjection((ProjectionExpression) exp); - case NHExpressionType.Property: - return VisitProperty((PropertyExpression) exp); + case NHExpressionType.SimpleProperty: + return VisitSimpleProperty((SimplePropertyExpression) exp); + case NHExpressionType.CollectionProperty: + return VisitCollectionProperty((CollectionPropertyExpression)exp); + case NHExpressionType.ComponentProperty: + return VisitComponentProperty((ComponentPropertyExpression) exp); default: return base.Visit(exp); } } + protected virtual Expression VisitProjection(ProjectionExpression projection) { var source = (SelectExpression) Visit(projection.Source); @@ -45,11 +50,29 @@ return source; } - protected virtual Expression VisitProperty(PropertyExpression property) + protected virtual Expression VisitSimpleProperty(SimplePropertyExpression property) { + Expression source = Visit(property.Source); + if (source != property.Source) + return new SimplePropertyExpression(property.Name, property.Column, property.Type, source, property.NHibernateType); return property; } + private Expression VisitComponentProperty(ComponentPropertyExpression property) + { + Expression source = Visit(property.Source); + if (source != property.Source) + return new ComponentPropertyExpression(property.Name, property.Columns, property.Type, source, property.NHibernateType); + return property; + } + private Expression VisitCollectionProperty(CollectionPropertyExpression property) + { + Expression source = Visit(property.Source); + if (source != property.Source) + return new CollectionPropertyExpression(property.Name, property.Type, source, property.NHibernateType); + return property; + } + //TODO: modify protected virtual Expression VisitSelect(SelectExpression select) { Modified: trunk/nhibernate/src/NHibernate.Linq/Visitors/SqlExpressionTranslator.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/SqlExpressionTranslator.cs 2008-09-20 16:10:08 UTC (rev 3776) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/SqlExpressionTranslator.cs 2008-09-20 16:50:54 UTC (rev 3777) @@ -128,7 +128,7 @@ return c; } - protected override Expression VisitProperty(PropertyExpression property) + protected override Expression VisitSimpleProperty(SimplePropertyExpression property) { var expr = property.Source as ParameterExpression; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |