J'ai une requête linq-to-nhibernate assez grande. J'ai maintenant besoin d'ajouter un filtre basé sur une fonction définie par l'utilisateur écrite dans t-sql dans laquelle je dois passer des paramètres. Dans mon cas, je dois passer un code postal que l'utilisateur tape et le passer à la fonction t-sql pour le filtrer à distance de ce zip. Est-ce possible, ou dois-je réécrire ma requête en utilisant l'API ICriteria?Linq To NHibernate Plus sql fonction définie par l'utilisateur
3
A
Répondre
3
i avons trouvé une solution:
Notez la requête NHibernate (de NQUERY) qui a RegisterCustomAction:
private void CallZipSqlFunction(ListingQuerySpec spec, IQueryable<Listing> query)
{
var nQuery = query as NHibernate.Linq.Query<Listing>;
//todo: find some way to paramaterize this or use linq-to-nh and not criteria to call the function
// so i don thave to check for escape chars in zipcode
if (spec.ZipCode.Contains("'"))
throw new SecurityException("invalid character");
//yuck!
var functionString = "dbo.GetDistanceForListing('" + spec.ZipCode + "',{alias}.ID) as Distance";
//create a projection representing the function call
var distance = Projections.SqlProjection(functionString, new[] { "Distance" }, new IType[] { NHibernateUtil.String });
//create a filter based on the projection
var filter = Expression.Le(distance, spec.ZipCodeRadius.Value);
//add the distance projection as order by
nQuery.QueryOptions.RegisterCustomAction(x => x.AddOrder(Order.Asc(distance)));
//add teh distance filter
nQuery.QueryOptions.RegisterCustomAction(x => x.Add(filter));
}
+0
+1 Bonne solution – DanP
Questions connexes
- 1. Linq-to-SQL avec une fonction UDF définie par l'utilisateur définie par une table
- 2. LINQ to NHibernate: Distinct
- 3. LINQ to SQL - fonction personnalisée
- 4. Filtrage Nhibernate par sortie de fonction définie par l'utilisateur
- 5. fonction définie par l'utilisateur SQL
- 6. Linq to NHibernate, ordre par Rand()?
- 7. LINQ To SQL "Grouper par"
- 8. Linq to NHibernate
- 9. Requête de critères NHibernate par rapport à LINQ to NHibernate
- 10. Linq to NHibernate vs. ICriteria
- 11. Application LINQ to SQL
- 12. Sql Server déterministe fonction définie par l'utilisateur
- 13. Quand utiliser "LINQ to SQL", framework d'entité, ou NHibernate?
- 14. LINQ to SQL - Regroupement par heures
- 15. Linq to SQL: Grouper par et Sum()
- 16. Linq to SQL avec groupe par
- 17. LINQ to groupe SQL par avec prise
- 18. Valeur LINQ to SQL par défaut? nullable
- 19. Linq to SQL avec Group par
- 20. LINQ to SQL - Grouper par/Où
- 21. LINQ to SQL - Grouper par table
- 22. Linq to SQL - Grouper par WorkWeek (ISO_WEEK)
- 23. Erreur LINQ to SQL
- 24. Linq to NHibernate - commande de type anonyme
- 25. LINQ to SQL ASP.net
- 26. Linq to NHibernate générant plus de 3 000 requêtes SQL en une seule requête!
- 27. Linq-to-NHibernate OrderBy ne fonctionne pas
- 28. Requête LINQ to SQL
- 29. Sql Query to Linq To Sql
- 30. Classes LINQ to SQL
J'ai le même problème. Avez-vous trouvé une solution ou réécrire la requête en utilisant ICriteria api? –