何时调用SaveChanges

时间:2013-01-11 00:28:43

标签: c# asp.net-mvc-4 entity-framework-5

说我在Controller中调用了类似的内容:

using (var context = new SqlContext())
{
    context.Items.Add(new Item("item1"));
}

我应该拨打context.SaveChanges();吗?

2 个答案:

答案 0 :(得分:9)

实体框架使用DbContext实现工作模式单元,这意味着您要定义要对数据库执行的事项包,然后调用保存更改以将它们全部传播到数据库。所有操作都将在一个事务中执行(对于单个saveChanges调用),这意味着将全部或全部操作一次传播到数据库。

在调用保存更改之前,更改将应用​​于本地跟踪图,但不会应用于数据库本身,直到调用savechanges为止。

答案 1 :(得分:1)

是的。

在调用context.SaveChanges();之前,您所做的每项更改都不会保存。

请注意,如果你有一个来自其他DbContext的对象(绝对不是你给出的情况),你应该使用这些代码行明确地改变实体状态:

Item item = new Item("item1")
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();