🎊 基本 SaveChanges

基本 SaveChanges

本文内容添加数据更新数据删除数据单个 SaveChanges 中的多个操作DbContext.SaveChanges() 是使用 EF 保存数据库更改的两种技术之一。 使用此方法,可执行一个或多个跟踪的更改(添加、更新、删除),然后通过调用 SaveChanges 方法来应用这些更改。 或者,可在不涉及更改跟踪器的情况下使用 ExecuteUpdate 和 ExecuteDelete。 有关这两种方法的介绍性比较,请参阅有关保存数据的概述页。

提示

可在 GitHub 上查看此文章的示例。

添加数据使用 DbSet.Add 方法添加实体类的新实例。 调用 DbContext.SaveChanges() 时,数据将插入到数据库中:

C#

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

Add、Attach 和 Update 方法全部呈现在传递给这些方法的实体的完整关系图上,如相关数据部分中所述。 此外,还可以使用 EntityEntry.State 属性仅设置单个实体的状态。 例如 context.Entry(blog).State = EntityState.Modified。

更新数据EF 将自动检测对由上下文跟踪的现有实体所做的更改。 这包括从数据库加载/查询的实体,以及之前添加并保存到数据库的实体。

只需修改分配给属性的值,然后调用 SaveChanges:

C#

复制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.Remove 方法删除实体类的实例:

C#

复制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 的单个调用中:

C#

复制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();}

🎯 相关推荐

银座国际酒店集团,银座集团酒店预订【携程酒店】
​四眼土狗:不应被遗忘的中华田园犬
mobile28365-365

​四眼土狗:不应被遗忘的中华田园犬

📅 08-13 👀 4230
多媒体互动手段解析及运用实例
Bet体育365提款流程

多媒体互动手段解析及运用实例

📅 08-02 👀 6478