Question

03Cp> Nous avons un projet NHibernate mature qui a commencé à utiliser le fournisseur LINQ dans NHibernate Stik. Comme nous utilisons NHibernate 2.0, nous ne pouvons pas utiliser le nouveau fournisseur en développement dans le coffre (contre NHibernate 3.0).u003C/

03Cp> Tandis que c'est limité, il s'est avéré être parfait pour nos besoins en dehors d'un problème - chaque fois que je sélectionne un compositeSuerype, j'ai une erreur ''u003C/

03Cp> Je ne suis pas sûr que le fournisseur de NHibernate NHibernate V1 peut comprendre ces types. Est-ce que quelqu'un sait-il à coup sûr? Ui'm essayant de la source et ne pas trouver beaucoup de joie. J'espère que quelqu'un peut m'aider et me montrer comment.u003C/

03Cp> Et maintenant l'exemple .... Pour le type d'activerecord donné ...u003C/

[ActiveRecord]
public class Product : IHoldPrice
{
       [PrimaryKey(PrimaryKeyType.Guid)]
       public virtual Guid Key { get; set; }

       [Property(NotNull = true, Length = 250)]
       public virtual string Name { get; set;}

       [CompositeUserType(typeof (PriceUserType), new[] {"Price_Value", "Price_DateChanged"})]
       public virtual IPrice CurrentPrice { get; set; }
}

03Cp> Quand j'essaie la déclaration suivante, je reçois une erreur:u003C/

(from p in Session.Linq<Product>()
              .Where(p => p.Key == productKey)
              .Select(p => new
                  {
                      p.Key,
                      p.CurrentPrice
                  }))
              .FirstOrDefault();

03Cp> Erreur:u003C/

03Cp> «La propriété ne correspond pas à une seule colonne: AuralPrix 'u003C/

03Cp> Stack: n 'Property ne correspond pas à une seule colonne: actuelPrix'u003C/

03Cp> Empiler:u003C/

NHibernate.QueryException: property does not map to a single column: CurrentPrice
   at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetColumn(ICriteria criteria, String propertyName)
   at NHibernate.Criterion.PropertyProjection.ToSqlString(ICriteria criteria, Int32 loc, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
   at NHibernate.Criterion.ProjectionList.ToSqlString(ICriteria criteria, Int32 loc, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
   at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetSelect(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[T]()
   at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.GetElementList(MethodCallExpression call, Int32 count)
   at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.HandleFirstOrDefaultCall(MethodCallExpression call)
   at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.VisitMethodCall(MethodCallExpression call)
   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression exp)
   at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.GetResults(MethodCallExpression expr)
   at NHibernate.Linq.Visitors.RootVisitor.HandleImmediateResultsCall(MethodCallExpression call)
   at NHibernate.Linq.Visitors.RootVisitor.VisitMethodCall(MethodCallExpression expr)
   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression exp)
   at NHibernate.Linq.Visitors.NHibernateQueryTranslator.Translate(Expression expression, QueryOptions queryOptions)
   at NHibernate.Linq.NHibernateQueryProvider.TranslateExpression(Expression expression)
   at NHibernate.Linq.NHibernateQueryProvider.Execute(Expression expression)
   at NHibernate.Linq.QueryProvider.System.Linq.IQueryProvider.Execute[T](Expression expression)
   at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)

03Cp> NOTE - Non, je ne peux pas utiliser de critères et aucun HQL ne va pas faire maintenant, et je sais que le nouveau fournisseur LINQ est beaucoup mieux.u003C/

Était-ce utile?

La solution

03Cp> Ok, nous avons mis à niveau vers NH v3.0 et il est résolu - peut sélectionner.u003C/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top