J'ai utilisé NHibernate 2.0.1.4000
sur tous les projets .NET 3.5 SP1 actuels et n'ai eu aucun problème avec d'autres requêtes (utilisant les API Query ou Criteria), jusqu'à ce que de nouvelles affaires la logique a dicté la nécessité d'une nouvelle requête dans ce projet particulier par rapport à la base de données de l'application qui doit extraire des enregistrements avec une propriété null spécifique (de type DateTime) à partir d'une seule table. Sachant que vous ne pouvez pas utiliser la restriction non-égale pour ce type de requête, mais que vous pouvez utiliser la restriction IsNull, cette requête simple génère une "valeur ne peut pas être nulle!" Exception lors de l'exécution J'ai des fichiers journaux log4net de mode DEBUG étendus, que j'ai examinés et que je n'ai pas encore aidé, et j'ai vérifié que ma classe pour la table spécifie la propriété que je vérifie est une propriété nullable (DateTime?) Pour éviter le problèmes qui peuvent provoquer en forçant des mises à jour de l'enregistrement, etc, ce qui ne se passe pas ici ...NHibernate 2.0.1 Critères: exception de lancement de restriction IsNull
Voici la requête, rien de complexe, et j'ai essayé avec/sans la restriction supplémentaire MaxResults pour l'éliminer comme un problème, et pourtant, à chaque fois, l'exception est jeté avant que je puisse recueillir les résultats:
ICriteria criteria = session.GetISession().CreateCriteria(typeof (Order)).Add(NHibernate.Criterion.Restrictions.IsNull("ShippedOn")).SetMaxResults(10);
IList<Order> entityList = criteria.List<Order>();
Toutes les idées ou des pointeurs vers plus d'informations qui pourraient me aider à résoudre ce problème? J'ai essayé d'utiliser HQL alternativement, les mêmes problèmes ... Ai-je manqué quelque chose ici en ce qui concerne le retour des enregistrements avec une propriété nulle spécifique?
Lien mort, fwiw. [Archive.org] (https://web.archive.org/web/20090402133829/http://blog.jagregory.com/2007/12/18/nhibernate-and-the-sqltypeexception) – ruffin
C'est exactement ce que cette réponse est.Si vous lisez le billet du blog, il y a très peu d'informations supplémentaires au-delà d'un récit. Veuillez également garder à l'esprit lorsque vous faites ces suggestions que ce post a été réalisé en 2008, * long * avant que Stack Overflow ait développé son étiquette de réponse au point où il est aujourd'hui. N'hésitez pas à suggérer une modification si vous pensez que la réponse pourrait être améliorée. –