Entity Framework 简单增删改操作

原文: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在执行修改操作前会检查哪些属性发生了变化,并且只会修改发生变化的字段。

时间: 2024-09-17 23:32:09

Entity Framework 简单增删改操作的相关文章

MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作

[正文]                                                                                                                                              一.JDBC的引入                                                                                               

问一个简单的问题,在winform中怎么不涉及到数据库对dgv里数据进行增删改操作呢?

问题描述 问一个简单的问题,在winform中怎么不涉及到数据库对dgv里数据进行增删改操作呢? 还有怎么同时把dgv里数据保存到数据库.我要代码,新增的最好有实体类的代码

mybatis generator 配置 反向生成Entity简单增删改查(推荐)_java

mybatis generator 配置 反向生成Entity简单增删改查实例代码如下所示: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd

Jquery easyui开启行编辑模式增删改操作_jquery

jQuery EasyUI 框架提供了创建网页所需的一切,帮助您轻松建立站点. easyui 是一个基于 jQuery 的框架,集成了各种用户界面插件. easyui 提供建立现代化的具有交互性的 javascript 应用的必要的功能. 使用 easyui,您不需要写太多 javascript 代码,一般情况下您只需要使用一些 html 标记来定义用户界面. HTML 网页的完整框架. easyui 节省了开发产品的时间和规模. easyui 非常简单,但是功能非常强大. 先给大家展示效果图:

Oracle数据库的增删改操作介绍

前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的更新操作即Oracle的增删改操作进行简单的介绍 首先要掌握对表结构的基本操作. 增加字段: alter table 表名 add(字段名 字段类型和长度) alter table table_name add(one_column varchar2(10)); 一次增加多个字段的话,每个字段直接以

Entity Framework 简单查询

原文:Entity Framework 简单查询 前言 首先来简单的复习一下如何使用Code First. 第一步还是先建立一个控制台的应用程序,然后通过Nuget添加Entity Framework.那么同时会给packages.config和App.config添加相应的配置. 第二步添加一个数据操作上下文实体类.添加两个构造函数,并添加一个Person的实体类. 在App.config的配置文件中添加相应的数据链接配置. 第三步在调用即可生成相应的数据库.  EFContext.cs pu

jQuery+json反射实现所有实体的增删改操作

那么,有三四十张表的话,前台表单是自动生成的.只不过生成的实体和数据库里的表名都是有规律可以 找的.还有操作实体的类,所以我只要通过前台把表单传过来.我就可以知道要反射到哪个实体,然后对实体 进行相应的赋值.再反射一个实体操作的类.就可以实现对实体的增删改操作了 上面是我的数据库表名 下面是我的实体,和实体操作的类名 private void InsertAndUpdateObj(HttpContext context) { string ClassName = context.Request.

javascript实现表格增删改操作实例详解

 本文实例讲述了javascript实现表格增删改操作的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 6

xml dtd-目的:使用java或C#或JSP或ASP等完成对xml文件的增删改操作。

问题描述 目的:使用java或C#或JSP或ASP等完成对xml文件的增删改操作. XML SPY和相关的环境 实验内容自己设计一个小型系统,要求数据存在XML文件中.使用java或C#或JSP或ASP等完成对xml文件的增删改操作.要求有用户操作的界面. (如通讯录管理系统.日志管理系统.班级管理系统等)实验步骤 使用dtd或schema完成所要设计系统的数据设计,并生成相应的xml存储文档.使用高级语言编写系统代码,完成对xml文档的操作 解决方案 有做好的例子吗?能发给我一份吗?谢谢谢谢.