I am trying to perform the following linq query using the Linq to
NHibernate provider:

            var query = from g in _session.Linq<Grower>()
                        where !contractor.Growers.Contains(g)
                        select g;
            return query.ToList();

but NHibernate throws an exception (I'll include a stack trace at the
end of this post).  I was able to get the following to work:

            var selectedIds = contractor.Growers.Select(x =>
x.Id).ToList();
            var query = from g in _session.Linq<Grower>()
                        where !selectedIds.Contains(g.Id)
                        select g;
            return query.ToList();

I would prefer to avoid this extra step.  Any ideas?  Here is the
stack trace from the first Linq query:

   at
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetEntityName(ICriteria
subcriteria, String propertyName)
   at
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetType(ICriteria
subcriteria, String propertyName)
   at
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetTypeUsingProjection(ICriteria
subcriteria, String propertyName)
   at
NHibernate.Criterion.InExpression.AssertPropertyIsNotCollection(ICriteriaQuery
criteriaQuery, ICriteria criteria)
   at NHibernate.Criterion.InExpression.ToSqlString(ICriteria
criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
   at NHibernate.Criterion.Junction.ToSqlString(ICriteria criteria,
ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
   at NHibernate.Criterion.NotExpression.ToSqlString(ICriteria
criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
   at
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2
enabledFilters)
   at
NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable
persister, CriteriaQueryTranslator translator,
ISessionFactoryImplementor factory, ICriteria criteria, String
rootEntityName, IDictionary`2 enabledFilters)
   at
NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable
persister, ISessionFactoryImplementor factory, CriteriaImpl
rootCriteria, String rootEntityName, IDictionary`2 enabledFilters)
   at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList
results)
   at NHibernate.Impl.CriteriaImpl.List(IList results)
   at NHibernate.Impl.CriteriaImpl.List()
   at NHibernate.Linq.CriteriaResultReader`1.List()
   at
NHibernate.Linq.CriteriaResultReader`1.<GetEnumerator>d__0.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1
collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

-- 
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