共用方式為


基本 SaveChanges

DbContext.SaveChanges() 是使用 EF 儲存資料庫變更的兩種技術之一。 使用此方法,您可以執行一或多個 追蹤的變更 (新增、更新、刪除),然後呼叫 SaveChanges 方法來套用這些變更。 或者, ExecuteUpdate ExecuteDelete 不需要牽涉到變更追蹤器即可使用 和 。 如需這兩種技術的簡介比較,請參閱 儲存資料的概觀頁面

提示

您可以檢視本文中的 GitHut 範例

加入資料

DbSet<TEntity>.Add使用 方法來新增實體類別的新實例。 當您呼叫 DbContext.SaveChanges() 時,資料會插入資料庫中:

using (var context = new BloggingContext())
{
    var blog = new Blog { Url = "http://example.com" };
    context.Blogs.Add(blog);
    context.SaveChanges();
}

提示

AddAttachUpdate 方法都會在傳遞至實體的完整圖表上運作,如相關資料 節所述。 或者,您也可以使用 EntityEntry.State 屬性來僅設定單一實體的狀態。 例如: context.Entry(blog).State = EntityState.Modified

更新資料

EF 會自動偵測對內容所追蹤之現有實體所做的變更。 這包括您從資料庫載入/查詢的實體,以及先前新增並儲存至資料庫的實體。

只要修改指派給屬性的值,然後呼叫 SaveChanges

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Single(b => b.Url == "http://example.com");
    blog.Url = "http://example.com/blog";
    context.SaveChanges();
}

刪除資料

DbSet<TEntity>.Remove使用 方法來刪除實體類別的實例:

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Single(b => b.Url == "http://example.com/blog");
    context.Blogs.Remove(blog);
    context.SaveChanges();
}

如果實體已存在於資料庫中,則會在 期間 SaveChanges 刪除它。 如果實體尚未儲存至資料庫(也就是已新增它),則會從內容中移除該實體,且在呼叫時 SaveChanges 不會再插入。

在單一 SaveChanges 中執行多個作業

您可以將多個新增/更新/移除作業合併成對 的單一呼叫 SaveChanges

using (var context = new BloggingContext())
{
    // seeding database
    context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
    context.Blogs.Add(new Blog { Url = "http://example.com/another_blog" });
    context.SaveChanges();
}

using (var context = new BloggingContext())
{
    // add
    context.Blogs.Add(new Blog { Url = "http://example.com/blog_one" });
    context.Blogs.Add(new Blog { Url = "http://example.com/blog_two" });

    // update
    var firstBlog = context.Blogs.First();
    firstBlog.Url = "";

    // remove
    var lastBlog = context.Blogs.OrderBy(e => e.BlogId).Last();
    context.Blogs.Remove(lastBlog);

    context.SaveChanges();
}

注意

對大多數資料庫提供者而言, SaveChanges 是交易式。 這表示所有作業都成功或失敗,而且永遠不會部分套用作業。