2009-07-30 8 views
4

J'ai un SP que je veux appeler depuis linq. Les SP ont 5 paramètres mais je veux seulement passer/besoin de 2 d'entre eux.Linq to SQL paramètres SP

comment pourrais-je appeler la SP comme quand je vais ajouter les paramètres dans le code, il construit l'habitude comme il veut tout 5.

Répondre

3

Vous auriez quelque chose comme ceci:

MyDbDataContext db = new MyDbDataContext(); 

db.MyStoredProc(customerID, "sometext", null, null, null); 

succès/échec dépendrait des instructions SQL dans votre sproc traitant nulls sur les 3 derniers paramètres.

+0

-t LinqToSql faire les arguments types nullables automatiquement? Je ne m'en souviens pas. Si non, cela ne marchera pas. –

+0

Oui, LinqToSql les rendra nullables (en supposant que le champ est nullable). –

1

overload l'appel sproc.

Je ne l'ai pas devant moi, mais vous feriez goto votre fichier DataAccessName.cs et de créer un nom de méthode avec la même signature

auto gen'd signature de la méthode sproc:

void sp_sproc(int a, int b, int c, int d, int e); 

vous feriez ceci dans votre fichier DataAccessName.cs

void sp_sproc(int a, int b) 
{ 
    this.sp_sproc(a,b,0,0,0); 
} 

si les params sont annulable, comme si

void sp_sproc(int? a, int? b, int? c, int? d, int? e); 

alors vous pourriez faire

void sp_sproc(int a, int b) 
{ 
    this.sp_sproc(a,b,null,null,null); 
} 
2

Une autre option est de faire glisser le proc stocké dans votre DBML une deuxième fois et supprimer les paramètres que vous ne voulez pas passer.

+0

Même que mon approche mais plus sexy puisque l'interface utilisateur le fait pour vous, pas mal. –

+0

Il existe une différence de comportement importante. Dans le cas de valeurs non nulles, passer en 0 comme vous le suggérez remplacerait toutes les valeurs par défaut définies dans la déclaration proc stockée. –