8
votes

NHibernate Linq - Utilisez l'expression Lambda à la place de l'attribut de formule sur la cartographie

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

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:

de i in session.Linq () où i.balance> 0 Sélectionnez I;

Comment puis-je injecter la balanceexpression.expression dans la requête LINQ?


0 commentaires

4 Réponses :


0
votes

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.


0 commentaires

1
votes

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

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

provoquerait un accès à la base de données pour chaque facture de la collection.
Cela pourrait toujours être acceptable pour vous, soyez juste au courant de cela ..
À votre santé JHONNY


0 commentaires

1
votes

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)


0 commentaires