Nibernate a un attribut sur l'élément de propriété de la configuration de mappage nommé "formule" qui permet aux injections de SQL de "calculer" une propriété. Le problème que j'ai est la formule utilisant directement la syntaxe SQL. Existe-t-il un moyen d'avoir Nhibernate.Linq d'utiliser une expression de Lambda au lieu d'utiliser la propriété de formule.
J'ai ce qui suit: p> Je veux que NHibernate utilise la balanceexpression.expression au lieu d'avoir à mettre SQL Syntaxe dans l'attribut formule afin que je puisse supprimer l'attribut de formule de ma configuration de mappage et écrivez des requêtes comme suit: p> de i in session.Linq ()
où i.balance> 0
Sélectionnez I; P> Comment puis-je injecter la balanceexpression.expression dans la requête LINQ? P> P>
4 Réponses :
Seule une expression SQL peut être utilisée comme formule, vérifiez la documentation - http://www.nhforge.org/doc/nh/fr/#Mapping-Declaration-Property . En effet, cela passe directement dans la propriété de formule d'une colonne de la base de données (une colonne calculée est créée avec cette formule).
Ne faites pas de choses trop complexes, utilisez simplement cette formule SQL. Si vous pensez que cette expression sera plus rapide - vous vous trompez. P>
Puisque vous avez déjà le montant et les propriétés payées sur votre objet, vous pouvez simplement définir la propriété Balance comme une propriété régulière: si vous ne définissez pas le montant / les propriétés payées Pour "paresseux", je pense que c'est la solution la mieux lisible et la plus maintenable. provoquerait un accès à la base de données pour chaque facture de la collection.
Si l'une de ces propriétés est chargée de paresseux, vous pouvez toujours utiliser cette méthode, noter que les effets secondaires auraient des effets secondaires.
Par exemple, une déclaration telle que ceci P>
Cela pourrait toujours être acceptable pour vous, soyez juste au courant de cela ..
À votre santé
JHONNY P> P>
Je suis à peu près sûr http: // hendryluk.wordpress.com/2011/09/06/NHibernate-Linq-ing-calculé-properties/ est ce que vous recherchez. (Le "meilleur moyen?" Partie) P>
La voie la plus avancée que j'ai vue jusqu'à présent est Nibernate.property.expression a >: Mais est censé résoudre certains problèmes (tels que besoin du nom de paramètre pour correspondre exactement à l'expression d'origine et dans le où code> clause). Plus d'informations sur la raison pour laquelle il a été créé dans Cet article . P> p>