首页 > 其他分享 >基本 SaveChanges

基本 SaveChanges

时间:2024-03-29 22:22:06浏览次数:18  
标签:基本 Blogs blog context var new SaveChanges

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

提示

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

添加数据
使用 DbSet<TEntity>.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<TEntity>.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();
}

标签:基本,Blogs,blog,context,var,new,SaveChanges
From: https://www.cnblogs.com/zy8899/p/18104724

相关文章

  • 基本运算符及流程控制语句(顺序、分支、循环结构)
    昨日内容回顾【一】八大基本数据类型#【1】数字类型#(1)整数类型(int)#(2)浮点数类型(float)#【2】字符串类型(str)#【3】列表类型(list)#【4】布尔类型(bool)#【5】字典类型(dict)#【6】集合类型(set)#【7】元组类型(tuple\)#【二】整数类型#能代表整数,代表......
  • MATLAB的一些基本知识
    1.矩阵%矩阵A=[123;456;789]B=A'%行变列,列变行C=A(:)%以先列后行的顺序打印为一列D=inv(A)%求逆A*DE=zeros(10,5,3)%打印三个10行5列的矩阵E(:,:,1)=rand(10,5)%打印随机数E(:,:,2)=randi(5,10,5)%打印最大为5的随机数E(:,:,3)=randn(10,5)%打印均值......
  • Python Numpy第三方库的基本使用
    1.下载Numpy第三方库pipinstallnumpy2.导入第三方库importnumpyasnp3.一些基本操作importnumpyasnpnum1=np.array([1,2,3,4,5])#创建数组print(num1)num2=np.zeros((3,2))#创建全零数组print(num2)print(num2.shape)#打印数组尺寸num3=np.ones((2,4))#创建......
  • 05程序与用户之间进行交互_基本运算符_流程控制语句
    【一】程序与用户之间进行交互【1】什么是与用户交互交互的本质就是输入、输出用户交互就是人往计算机中input/输入数据,计算机print/输出结果【二】如何与用户交互【1】输入(input)用户输入一些内容,用户按下回车键后,input函数会返回用户输入的内容input接受所有的数据类型......
  • 04基本数据类型
    【一】数字类型(int/float)(1)作用整数类型用于表示整数,是一种基本的数字类型,广泛用于表示计数、索引等整数值。浮点类型用于表示带有小数部分的数值,适用于需要更精确表示的情况。(2)定义#【1】整型--intnumber=18#查看内存地址print(id(number))#140728323794248......
  • Windows注册表的基本概念
    1关于注册表注册表是Windows系统中重要的数据配置存储结构,存储着系统绝大部分的核心配置信息。实际上也是一种文件,这些文件大多数存储在系统盘system32\config目录下,如笔者系统安装在C盘,那这个目录就是C:\Windows\System32\config。Hive方式在该文件夹下可以看到SOFTWARE、S......
  • 程序与用户交互&基本运算符
    目的与程序之间交流输入输出如何交互输入:input弹出输入框:input()弹出提示信息:input("pleaseinput:")弹出提示信息,并返回:user=input("....:"),print(user)注意点:输入的内容永远是字符串,需要强制转化为所需要类型。代码num1=input("pleaseinput:")num2=in......
  • kafka基本概念学习
    使用场景消息队列:削峰,解耦(服务间调用从直接的rpc、http调用改为主动拉取)技术对比类似技术方案:rabbitMQ、memcache、rocketMQkafka优点高吞吐量:单机每秒处理几十上百万的消息量。即使存储了TB及消息,也保持稳定的性能。零拷贝 减少内核态到用......
  • 2. Java基本语法
    文章目录2.Java基本语法2.1关键字保留字2.1.1关键字2.1.2保留字2.1.3标识符2.1.4Java中的名称命名规范2.2变量2.2.1分类2.2.2整型变量2.2.3浮点型2.2.4字符型char2.2.5Unicode编码2.2.6UTF-82.2.7boolean类型2.3基本数据类型转换2.3.1自动类型转换2.2......
  • 学习变量的目的及基本数据类型介绍
    今日练习1.如何书写python的注释语法【1】单行注释单行注释是指只对一行进行注释,一旦换了一行就不生效了注释方法:#注释内容快速注释单行代码【2】多行注释多行注释适用于代码块注释方法:英文状态下的三个单引号或者双引号,头尾皆需要"""内容"""'''内......