複数のレコードをテーブルに挿入しようとしていますが、各レコードに以前のシーケンス番号挿入されたレコード。例えば各インサートでシーケンス検索関数を呼び出す際に、LINQ to SQLで一度に複数のレコードを挿入する方法
:
var db = new StoreDataContext();
var inserts = payments.Select(p => new payment
{
order_fk = p.order_fk, line_no = DbMethods.GetNextLine(p.order_fk),
amount = p.amount
});
db.payments.InsertAllOnSubmit(inserts);
db.SubmitChanges(ConflictMode.FailOnFirstConflict);
DbMethods.GetNextLineは行くと、その特定の順序のためのMAX(line_no) + 1
を取得するSQLスカラー関数です。
私の問題は、実際の挿入が行われる前に関数が実行されるため、line_noの値はすべて同じです。とにかく、各レコードを別々に提出しなければならないのですか?
なぜ、line_noをアイデンティティにしないのですか? – cadrell0
残念ながら私はテーブルを変更することはできません。 – ddechant
それは開発の非常に大きな障害です。データアクセス層を作成している人はスキーマを変更できません。誰か他の人に修正を提案してもらえますか、それとも完全にこれに固執していますか? – StriplingWarrior