0

int[] (userIDs) と int (groupID) をパラメーターとして受け入れるメソッドがあります。次に、ストアド プロシージャを実行し、データを DB に挿入します。

For example:
if userIDs=[1,2,3] and groupID=4, 
then I want the following data to be inserted into the DB
userID    groupID
1            4
2            4
3            4 

この問題には2つの解決策があります。1 つ目は、単一のレコードを DB に挿入するストアド プロシージャを作成することです。method() では、int[] をループし、ストアド プロシージャを n 回呼び出します。

method()
for (int i =0; i< userID.length; i++){
    // call stored procedure to insert a single record
}

2 番目の解決策は、int[] と int をパラメータとしてストアド プロシージャに渡し、ストアド プロシージャでループを実行することです。

どちらの方法がより良い解決策ですか? (2番目のソリューションの方が優れている場合、ストアドプロシージャでのint []の処理に関するガイダンスを誰かが提供できますか)

4

3 に答える 3

1

O/R マッパーを使用したくない正当な理由はありますか? あなたの例はサーバー/分離コードのように見え、Entity Framework (またはその他) を使用して新しい値を挿入できます。それらを使用できない場合は、for (投稿の 2 番目) アプローチを使用します。しかし、あなたはどのトランザクションにも属していないため、危険です。

Entity Framework の調査は、http ://www.asp.net/entity-framework で開始できます。何らかの理由で EF を使用できない場合は、SQL コマンドにトランザクション スコープを使用することを検討してください (読み始めるにはhttp://msdn.microsoft.com/en-us/library/777e5ebh.aspxを参照してください)。

于 2013-08-07T18:43:08.670 に答える
0

データベースに行を追加するだけなら、ストアド プロシージャは必要ないと思います (DBA またはポリシーからの要件でない限り)。

アイテムをループして、ADO.NET または Entity Framework を使用してエントリをデータベースに追加するだけです。

于 2013-08-07T17:31:23.470 に答える
0

Geeeeeeeeeeeee総合的に言えば、コードはこのようなものの方が高速です。C# 側で配列を反復処理してから、ストアド プロシージャを呼び出して特定のレコードを処理する方がよいでしょう。

もちろん、詳細は変更されますが、これは確かに 1 つの大きなショットで処理するのが最善のように思えます。int 配列をデータテーブルに変換すると、本当に楽しい時間を過ごすことができます...

于 2013-08-07T17:20:33.913 に答える