You are using the wrong provider. NH 3 has an integrated one, accessible by
using the Query<T> extension method; you can remove the old NHibernate.Linq
assembly, which is not compatible.

    Diego


On Tue, Dec 28, 2010 at 17:48, kamil.kliczbor <[email protected]>wrote:

> Hi,
> I wanted to try LINQ feature with NHibernate 3.0.0.4000. When I write
> a query in ICriteria API it works. But with LINQ I get:
> System.TypeLoadException : Method 'CreateAlias' w typie
> 'NHibernate.Linq.Util.DetachedCriteriaAdapter' from assembly
> 'NHibernate.Linq, Version=1.0.0.4000, Culture=neutral,
> PublicKeyToken=444cf6a87fdab271' has no implementation.
>
> Mappings are fine, because all my CRUD tests are ok.
>
> Here is the query that works:
> this.Session.CreateCriteria(typeof(Product))
>                .Add(Expression.Between("ReorderLevel", 1, 3))
>                .List<Product>();
>
> and the LINQ that doesn't:
>  this.Session.Linq<Product>()
>                .Where(p => p.ReorderLevel >= 1 && p.ReorderLevel <=
> 3)
>                .ToList();
>
> StackTrace:
> w NHibernate.Linq.Util.CriteriaUtil.GetRootType(ICriteria criteria)
> w
> NHibernate.Linq.Visitors.MemberNameVisitor.IsRootEntity(EntityExpression
> expr)
> w
> NHibernate.Linq.Visitors.MemberNameVisitor.VisitEntity(EntityExpression
> expr)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
>
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.VisitPropertyAccess(PropertyAccessExpression
> expr)
> w
>
> NHibernate.Linq.Visitors.MemberNameVisitor.VisitPropertyAccess(PropertyAccessExpression
> expr)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w NHibernate.Linq.Visitors.MemberNameVisitor.GetMemberName(ICriteria
> rootCriteria, Expression expr)
> w
>
> NHibernate.Linq.Visitors.BinaryCriterionVisitor.VisitPropertyAccess(PropertyAccessExpression
> expr)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
> NHibernate.Linq.Visitors.BinaryCriterionVisitor.GetBinaryCriteria(ICriteria
> rootCriteria, ISession session, BinaryExpression expr,
> ComparePropToValue comparePropToValue, ComparePropToProp
> comparePropToProp, CompareValueToCriteria compareValueToCriteria,
> ComparePropToCriteria comparePropToCriteria)
> w
>
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitBinaryCriterionExpression(BinaryExpression
> expr)
> w
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitBinary(BinaryExpression
> expr)
> w NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
>
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitAndAlsoExpression(BinaryExpression
> expr)
> w
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitBinary(BinaryExpression
> expr)
> w NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
> NHibernate.Linq.Visitors.ExpressionVisitor.VisitLambda(LambdaExpression
> lambda)
> w NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitUnary(UnaryExpression
> expr)
> w NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.GetCriterion(ICriteria
> rootCriteria, ISession session, Expression expression)
> w
> NHibernate.Linq.Visitors.RootVisitor.HandleWhereCall(MethodCallExpression
> call)
> w
> NHibernate.Linq.Visitors.RootVisitor.VisitMethodCall(MethodCallExpression
> expr)
> w NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
> w
> NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
> w
> NHibernate.Linq.Visitors.NHibernateQueryTranslator.Translate(Expression
> expression, QueryOptions queryOptions)
> w
> NHibernate.Linq.NHibernateQueryProvider.TranslateExpression(Expression
> expression)
> w NHibernate.Linq.NHibernateQueryProvider.Execute(Expression
> expression)
> w NHibernate.Linq.Query`1.GetEnumerator()
> w System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
> w System.Linq.Enumerable.ToList(IEnumerable`1 source)
> w Northwind.Domain.Tests._101Queries.Restrictions.BetweenClause() w
> Restrictions.cs: line 75
>
> Here is my Fluent mapping:
> public class ProductClassMap : ClassMap<Product>
>    {
>        public ProductClassMap()
>        {
>            Table("Products");
>            Id(x => x.Id, "ProductId");
>            Map(x => x.Name, "ProductName").Length(40).Not.Nullable();
>            References(x => x.Supplier,
> "SupplierId").Fetch.Select().Access.Property();
>            References(x => x.Category,
> "CategoryId").Fetch.Select().Access.Property();
>            Map(x => x.QuantityPerUnit,
> "QuantityPerUnit").Length(20).Access.Property();
>            Map(x => x.UnitPrice, "UnitPrice").Access.Property();
>            Map(x => x.UnitsInStock,
> "UnitsInStock").Access.Property();
>            Map(x => x.UnitsOnOrder,
> "UnitsOnOrder").Access.Property();
>            Map(x => x.ReorderLevel,
> "ReorderLevel").Access.Property();
>            Map(x => x.Discontinued,
> "Discontinued").Not.Nullable().Access.Property();
>            HasMany(x => x.OrderLines)
>                .KeyColumn("ProductId")
>                .Cascade.None()
>                .AsBag()
>                .Access
>                .CamelCaseField(Prefix.Underscore);
>        }
>    }
>
> Here is my entity:
> public class Product : Entity<Product>
>        {
>                private readonly IList<OrderLine> _orderLines;
>            private string _name;
>
>            public Product() : this(null)
>                {
>                }
>
>                public Product(string name)
>                {
>                        _orderLines = new List<OrderLine>();
>
>                        _name = name;
>                }
>
>                public virtual string Name
>                {
>                        get { return _name; }
>                        set { _name = value; }
>                }
>
>            public virtual Supplier Supplier { get; set; }
>
>            public virtual ProductCategory Category { get; set; }
>
>            public virtual string QuantityPerUnit { get; set; }
>
>            public virtual decimal? UnitPrice { get; set; }
>
>            public virtual int UnitsInStock { get; set; }
>
>            public virtual int UnitsOnOrder { get; set; }
>
>            public virtual int ReorderLevel { get; set; }
>
>            public virtual bool Discontinued { get; set; }
>
>            public virtual ReadOnlyCollection<OrderLine> OrderLines
>                {
>                        get { return new
> ReadOnlyCollection<OrderLine>(_orderLines); }
>                }
>        }
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to