Webフォームに5つのFileUploadコントロールがあります.2つのSQLサーバーテーブルがあります...
Tbl_ClaimDetails
SrNo | Remark | BrMkrdt
Tbl_ClaimImages
SrNo | Img | Id | ImgName
最初のファイル アップロード コントロールは必須です。たとえば、ユーザーがアップロードする 3 つのファイルを選択した場合、最初のイメージ ファイルを使用してTbl_ClaimDetails
、ストアド プロシージャを介してデータを挿入します (SrNoTbl_ClaimDetails
は ID です) SCOPE_IDENTITY()
。この SCOPE_IDENTITY() 値を変数に格納していますlastid
今、私は別のストアド プロシージャを使用しTbl_ClaimImages
て、lastid と共にこの最初のイメージにデータを挿入しています。
if (file1.ContentLength > 0 && (u1 != null || u1 != 0))
{
Stream fs = file1.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
//store procedure inserts data in tbl_claimdetails and return SCOPE_IDENTITY()
lastid = dbo.ExecProc1(claim.Remark, claim.BrMkrdt);
//another stored procedure inserts data in tbl_ClaimImages
dbo.insert(bytes, lastid, file1.FileName);
count++;
}
if (file2.ContentLength > 0 && (u1 != null || u1 != 0))
{
Stream fs = file2.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
dbo.insert(bytes, lastid, file1.FileName);
count++;
}// and so on till file5
このアプローチはうまく機能しています。エラーや問題はありませんが、これよりも良いアプローチがあるかどうか知りたいですか? ご覧のとおり、指定されたテーブルに値を挿入するために 2 つの異なるストアド プロシージャを実行しています。値を挿入するストアド プロシージャは、最初に 1 回だけ実行され、ユーザーがアップロードしている画像の数に応じてTbl_ClaimDetails
値を挿入するために、別のストアド プロシージャを何度も実行しています。Tbl_ClaimImages
1 回の実行で 1 つのストアド プロシージャを使用して、これらすべてを実行できる可能性はありますか? または、より良いアプローチがありますか?