0
私はasp net webプロジェクトを持っています。私はベースに複数のレコードを挿入しようとしています。
私のアイデアは、レコードを更新し、更新されたパラメータでこのレコードのコピーを作成することです。
しかし、私のレコードの更新のみ、私は(私はforeachを作成し、1レコードで挿入/更新したくない)挿入を行う方法を理解していません。
このレコードのコピーを1つの変更されたパラメータに挿入した後、どのように更新することができますか?エンティティフレームワークとlinqで多重アイテムを挿入する方法
マイコード:
public void SAVE(List<int> list,int stat)
{
var all = context.ReqForDoc.ToList();
var friends = context.ReqForDoc.Where(f => list.Contains(f.requestN)).ToList();
friends.ForEach(a => // UPDATE WORK
{
a.actual = 0;
a.ReqStatus = stat;
a.ChangeDate = DateTime.Now;
});
all.AddRange(friends); // INSERT NOW WORK
context.SaveChanges();
}
EF変更トラッカーは参照平等を使用します。したがって、元のオブジェクトを手動でコピー/更新して**新しい**オブジェクトを作成し、現在のようにローカルリスト*ではなく、対応する 'DbSet'に追加する必要があります。 –
@IvanStoev申し訳ありませんが、私はどのように私のDBに追加することができます、この場合も動作しないAddrange: リスト list2 =新しいリスト(); list2 = context.ReqForDoc.Where(f => list.Contains(f.requestN))。ToList(); context.ReqForDoc.AddRange(list2); context.SaveChanges(); –
私はあなたのモデルを持っていないので、私は正確には分かりませんが、このようなものでなければなりません(コメントの**新しい**部分を見逃したようです) 'context.ReqForDoc.AddRange(friends.Select( f =>新しいReqForDocType {Prop1 = f.Prop1、Prop2 = f.Prop2、...})) '。それがIDであれば、選択にPKを含めないでください。 –