2009-02-01 6 views
7

Comment l'instruction sql suivante se traduirait par une requête linq?Comment appeler un UDF dans une requête linq to sql?

select ID, 
     Price, 
     dbo.fGetText(DescriptionID, defaultLanguage, currentUserLanguage) 
from Products 

L'UDF fGetText est assez important et utilisé tout au long de la base de code, donc il doit être encapsulé (comme UDF ou autre, peut-être une expression Linq).

Des allers-retours supplémentaires au serveur de base de données ne sont pas une option. Il ne devrait y avoir qu'une seule requête, en récupérant 3 champs.

Un grand merci d'avance pour votre aide. C'est grandement apprécié.

Répondre

3

Voici l'article MSDN:

How to: Call User-Defined Functions Inline (LINQ to SQL)

Une note de la même page:

Bien que vous pouvez appeler des fonctions fonctions inline définies par l'utilisateur, qui sont inclus dans un La requête dont l'exécution est différée n'est pas exécutée tant que la requête n'est pas exécutée. Pour plus d'informations sur , voir Introduction aux requêtes LINQ .

Lorsque vous appelez la même fonction en dehors d'une requête, LINQ to SQL crée une requête simple de la méthode appel expression

Aussi, jetez un oeil à ce 13 min screencast.

2

Vous pouvez ajouter des fichiers UDF à un fichier DBML LINQ to SQL, tout comme vous ajoutez des tables et des sprocs. Ils deviennent alors des méthodes exécutables sur le DataContext.

Google a beaucoup d'articles, comme this.