我需要在我的控制器中对我的数据库进行一些更改。
foreach (var valueStream in model.ListValueStream)
{
ValueStreamProduct vsp = new ValueStreamProduct(valueStream.Id, product.Id);
db.ValueStreamProduct.Add(vsp);
}
db.SaveChanges();
Shoul我在最后或每次做出更改时都会调用SaveChanges?
答案 0 :(得分:6)
这取决于。
答案 1 :(得分:1)
最后,所有已完成的更改将以较少的数据库访问和较少的开销来保存
答案 2 :(得分:1)
这取决于您的要求
要求1)三个表是独立的。
public ActionResult Create()
{
db.ValueStreamProduct.Add(vsp);
db.tbl.Add(tbl2);
db.tbl.Add(tbl3);
// only one time you can call savechanges()
db.SaveChanges();
}
要求2)对于tbl2,必须使用ValueStreamProduct表。
但是,您需要获取最后插入记录的第二个表的ID。像这样的代码
public ActionResult Create()
{
db.ValueStreamProduct.Add(vsp);
db.SaveChanges();
// getting last inserted record's Id from ValueStreamProduct table.
tbl2.Column = vsp.Id
db.tbl.Add(tbl2);
db.tbl.Add(tbl3);
db.SaveChanges();
}