From: <te...@us...> - 2008-09-20 16:10:33
|
Revision: 3776 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3776&view=rev Author: tehlike Date: 2008-09-20 16:10:08 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Adding type specific properties to expressions. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/QuerySourceExpression.cs trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs trunk/nhibernate/src/NHibernate.Linq.Test/SelectTest.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/CollectionPropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using NHibernate.Type; + +namespace NHibernate.Linq.Expressions +{ + public class CollectionPropertyExpression : PropertyExpression + { + public CollectionPropertyExpression(string name, System.Type type, Expression source, IType nhibernateType) + : base(name, type, source, nhibernateType) + { + } + + public CollectionType CollectionType { get { return base.NHibernateType as CollectionType; } } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs 2008-09-20 13:23:41 UTC (rev 3775) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/ComponentPropertyExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) @@ -17,5 +17,6 @@ } public string[] Columns { get; protected set; } + public ComponentType ComponentType { get { base.NHibernateType as ComponentType; } } } } Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/QuerySourceExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/QuerySourceExpression.cs 2008-09-20 13:23:41 UTC (rev 3775) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/QuerySourceExpression.cs 2008-09-20 16:10:08 UTC (rev 3776) @@ -14,8 +14,8 @@ { this.Persister = entityPersister; } - public IEntityPersister Persister { get; protected set; } - + public IOuterJoinLoadable Persister { get; protected set; } + public override string ToString() { return string.Format("({0})", Persister.EntityName); Modified: trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-09-20 13:23:41 UTC (rev 3775) +++ trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-09-20 16:10:08 UTC (rev 3776) @@ -50,6 +50,7 @@ </ProjectReference> </ItemGroup> <ItemGroup> + <Compile Include="Expressions\CollectionPropertyExpression.cs" /> <Compile Include="Expressions\ComponentPropertyExpression.cs" /> <Compile Include="Expressions\OrderExpression.cs" /> <Compile Include="Expressions\OrderType.cs" /> Modified: trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs 2008-09-20 13:23:41 UTC (rev 3775) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs 2008-09-20 16:10:08 UTC (rev 3776) @@ -44,14 +44,10 @@ return null; } - private string GetNextAlias() - { - return "source" + (aliasOrder++); - } - protected override Expression VisitMemberAccess(MemberExpression expr) { expr = (MemberExpression) base.VisitMemberAccess(expr); + System.Type type = TypeSystem.GetElementType(expr.Type); IClassMetadata clazz = GetMetaData(expr.Member.DeclaringType); IPropertyMapping mapping = sessionFactory.GetEntityPersister(expr.Type.FullName) as IPropertyMapping; IType propertyType = clazz.GetPropertyType(expr.Member.Name); @@ -65,13 +61,12 @@ } else if(propertyType.IsAssociationType) { - throw new NotImplementedException(); + throw new NotImplementedException("Queries on associations are not yet supported"); } else if(propertyType.IsCollectionType) { - throw new NotImplementedException(); + throw new NotImplementedException("Queries on collections are not yet supported"); } - else//Assume simple property { return new SimplePropertyExpression(expr.Member.Name,mapping.ToColumns(propertyName)[0], ((PropertyInfo) expr.Member).PropertyType, Modified: trunk/nhibernate/src/NHibernate.Linq.Test/SelectTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq.Test/SelectTest.cs 2008-09-20 13:23:41 UTC (rev 3775) +++ trunk/nhibernate/src/NHibernate.Linq.Test/SelectTest.cs 2008-09-20 16:10:08 UTC (rev 3776) @@ -13,8 +13,9 @@ [Ignore("this doesn't work yet")] public void CanSelectAnimals() { - var animals = session.Linq<Animal>().ToList(); - Assert.IsNotNull(animals); + var animals = from f in session.Linq<Animal>() + select f; + animals.ToList(); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |