2009-07-30 14 views
4

私はlinqから呼び出したいSPを持っています。 SPには5つのパラメータがありますが、そのうち2つに渡したいだけです。LinqからSQL SPのパラメータ

は、どのように私はそれがすべて5

答えて

3

を行うことができますが、このような何かを持っていると思いますパラメーター。

+0

LinqToSqlは自動的に引数NULL可能なタイプを作るのですか?私は覚えていない。そうでなければ、これはうまくいかない。 –

+0

はい、LinqToSqlはnull可能な型にします(フィールドがヌル可能であると仮定します)。 –

1

overload SPROCを呼び出しをしたいと、それは文句を言わないの構築、コード内のパラメータを追加するために行くときのようにSPを呼び出します。

私は私の目の前でそれを持っていけないけど、あなたがしたい後藤あなたのDataAccessName.csファイルと同じ署名で

自動gen'd SPROCをメソッドシグネチャメソッド名を作成します。

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

をあなたはこのあなたのDataAccessName.cs内のparamsがNULL可能である場合、その

のように、

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

ファイル作ると思います成功/失敗がこれらの最後の3にNULL値を扱うあなたのSPROC内部のSQLステートメントに依存するであろう

MyDbDataContext db = new MyDbDataContext(); 

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

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

、あなたは

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

別のオプションは、あなたのDBMLに二度目のストアドプロシージャをドラッグして、渡したくないパラメータを削除することです。

+0

私のアプローチと同じですが、UIがあなたのためにやっているからセクシーです。悪くはありません。 –

+0

重要な動作の違いがあります。 nullのない値の場合は、暗黙のうちに0を渡すと、ストアドプロシージャの宣言内に設定されているデフォルト値がオーバーライドされます。 –