Entity Framework 简单增删改操作
前言
在 Entity Framework 简单查询操作 中主要是学习了在Entity Framework中的几种不同模式的查询操作,现在主要来学习一下简单的增加、删除、修改操作。
增加
在EF中添加操作一般有两种方式:一是直接创建对象,然后调用“DbSet”的”Add()”方法进行添加;二是调用数据库上下文的”Entry()”方法并设置对应的状态。无论使用哪种方式最终一定要调用“SaveChange()”进行提交。如:
using (var db = new EFContext()){var stephen = new Person{PersonName="aehyok0001",Age=25,Address="深圳南山",Email="aehyok@163.com"};db.Persons.Add(stephen);var jeffrey = new Person{PersonName = "aehyok0002",Age = 25,Address = "深圳宝安",Email = "Leo@163.com"};db.Entry(jeffrey).State = EntityState.Added;db.SaveChanges();}
执行后效果如下
此外,在含有导航属性时,将一个对象赋值给另一个对象的导航属性也能达到添加的效果(当导航属性为”DbSet“集合时通过调用导航属性的“Add()“方法也同样可以达到添加效果)。
状态跟踪
在这里我们需要强调一点那就是状态跟踪,对于上面的操作如果我们调用“Attach()”方法对实体进行跟踪或者设置实体的状态那么数据将不会保存到数据库:
这两句添加任何一句效果都是一样的,就是都没有保存到数据库中。
使用”Attach()”方法进行实体跟踪时会设置实体的状态为“Unchanged”此时实体处于未修改状态,当执行“SaveChange()”方法时EF不会执行修改操作。相反如果此时设置实体状态为“Modified”则EF执行更新操作。那么既然EF的数据修改操作(增加、更新、删除)是根据实体状态而进行的,那么为什么之前我们的增加操作能正常进行而不用手动修改其状态呢?原因是EF会自动发现状态改变,在调用下面的方法时状态发现是自动的:
当然,并不是所有的时候我们都需要EF自动发现状态改变,设置 “DbContext.Configuration.AutoDetectChangesEnabled”属性为“false”可以禁用自动发现功能。
删除
现在来看一下Entity Framework的删除操作
using (var db = new EFContext()){var person = db.Persons.Where(m => m.PersonId == 4).FirstOrDefault();db.Persons.Remove(person);db.SaveChanges();}
当然有了上面状态跟踪的讨论相信大家也可以想到如下删除方法:
using (var db = new EFContext()){var person = db.Persons.Where(m => m.PersonId == 5).FirstOrDefault();db.Entry(person).State = EntityState.Deleted;db.SaveChanges();}
上面两种方法都会达到删除的目的。
修改
修改数据很简单,直接修改对应的属性即可:
using (var db = new EFContext()){var person = db.Persons.Where(m => m.PersonId == 3).FirstOrDefault();person.PersonName="UpdateNewName";db.SaveChanges();}
需要说明的是,EF在执行修改操作前会检查哪些属性发生了变化,并且只会修改发生变化的字段。
Entity Framework 简单增删改操作相关推荐
- mysql手机指令_MySQL脚本命令数据简单增删改操作教程
从这一节,我们开始学习对数据的操作,所谓数据无价,指的就是我们现在要操作的东西,因此,我们从今天的课程开始要谨慎操作我们的数据表数据,以防误操作造成企业不可挽回的后果.一定要注意数据备份! 所谓的数据 ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
- python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
- python操作数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
- MySQL——数据库的增删改操作
数据库的增删改操作 数据库的增操作 数据库的增操作主要涉及数据库的增加.数据表的增加.表记录增加以及表字段增加等.数据库的增加非常简单,就是新创建一个数据库:表记录的增加指的就是新增表的数据行,可以是 ...
- 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式
一. 背景 说起EF的增删改操作,相信很多人都会说,有两种方式:① 通过方法操作 和 ② 通过状态控制. 相信你在使用EF进行删除或修改操作的时候,可能会遇到以下错误:" The obj ...
- Oracle数据库的增删改操作介绍
前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的 ...
- mysql 编辑数据库内容_详解mysql数据库增删改操作
插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...
- 20190602:JDBC的增删改操作实践
实现JDBC的增删改操作 JDBC的增删改操作 测试 JDBC的增删改操作 首先紧接昨天的JDBC的第一个程序,进行简单的修改即可做到增删改操作: public void insert_test() ...
最新文章
- 如何把Word里的公式放到PowerPoint里
- c++矩阵连乘的动态规划算法并输出_算法面试必修课,动态规划基础题型归纳(三)
- 在Rayeager px2上搭建web服务器anmpp
- Vue.js 条件与循环
- 电子双缝干涉,可以在穿过缝前进行探测
- python中dateutil库用法详解
- 锅炉正反平衡计算热效率
- java制作手机投射电脑_Android手机屏幕投射到电脑神器Vysor
- Open3DCGAL DTM(数字地形模型)
- 穷举查找之旅行商问题、背包问题、分配问题
- 日期转换和日历的使用方法
- mtk+android+wear,MTK专用处理器--可穿戴
- 怎样用计算机求立方根的近似数,(教案3)6.2 立方根
- 洛谷 P2884 【[USACO07MAR]每月的费用Monthly Expense】
- SpringBoot 项目实现 Excel 导入导出功能
- 既然都有了NS,何不再入一个喷喷(Splatoon 2)【下】
- LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED
- python多线程爬取王者荣耀高清壁纸过程
- firewalld防火墙
- HDFS java API操作