在EF的上一篇博客中已经对它的增删改查有了一个简单的了解。当中的改动过程是先要把要改动的内容查出来然后再进行改动、保存。它详细的过程是这种

首先当在运行查询语句的时候“EF数据上下文”会先訪问数据库进行查询,然后将结果以对象的方式返回到“EF数据上下文中”,EF数据上下文相当于是一个容器,在对象进入到容器中的时候在对象的外側会再进行包装如上图所看到的。这样返回的对象会以“EF包装类对象”存在。同一时候这个对象会有一个标识,当中的每一个属性也都有一个标识,当对其属性进行改动的时候属性标识就会改变,在数据库中就是依据这些标识生成相应的SQL语句的。

可是这样比較麻烦,每次改动前都须要先进行查询,依据以上的原来能够改进出第二种方法。

#region改动改进。不须要先进行查询 Edit1()
///<summary>
///改动改进
/// </summary>
public void Edit()
{
//1、实例化要改动的对象,注意这里属性的值是目标值即改动完以后的值
T_Book book = new T_Book() {bookID="1",bookName="红楼梦" };
//2、将对象增加到EF容器中
DbEntityEntry<T_Book> entry = db.Entry<T_Book>(book);
//3、将整个对象标识为没有改动过
entry.State = System.Data.EntityState.Unchanged;
//4、对要改动的属性的标识进行改动,这是的对象的标识也会改变
entry.Property("bookName").IsModified = true;
//5、保存
db.SaveChanges(); //在进行SaveChanges()的时候,会依据对象的状态、对象中属性的状态生成SQL语句 }
#endregion

相同的原理这样的方法能够再增、删中用。

小结

EF是第一次接触。非常多东西陌生可是又熟悉。它还是对数据库的增删改查仅仅是操作方法是建立在面向对象的基础上的。自己看的视频中有非常多原理老师讲的也比較easy懂得,关于这样原理自己认为研究是有必要的由于结合近期学习和使用AJAX的情况懂得原理了操作起来更easy。并且灵活一些。

EF增删改查的优化的更多相关文章

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(5)-EF增删改查by糟糕的代码

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(5)-EF增删改查by糟糕的代码 上一讲我们创建了一系列的解决方案,我们通过一个例子来看看层与层之间的关系 ...

  2. 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序

    分享一个自己写的MVC+EF “增删改查” 无刷新分页程序 一.项目之前得添加几个组件artDialog.MVCPager.kindeditor-4.0.先上几个效果图.      1.首先建立一个数 ...

  3. WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

    WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. ...

  4. C# EF增删改查

    1.增 //1.创建一个EF数据上下文对象 MyDBEntities context=new MyDBEntities(); //2.将要添加的数据,封装成对象 Users user = new Us ...

  5. MVC3.0 EF增删改查的封装类

    本人亲身使用EF CodeFirst,因为增删改查都是使用EF内置的一些方法,我想把它封装到一个类调用就行了.结合网上的资料和自己的整理,若有不对的地方望斧正,感激不尽.直接上代码吧.我就用新闻的增删 ...

  6. EF学习笔记-1 EF增删改查

    首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...

  7. ef增删改查

    [C#]Entity Framework 增删改查和事务操作 1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长 ...

  8. 大数据之路week05--day01(JDBC 初识之实现一个系统 实现用户选择增删改查 未优化版本)

    要求,实现用户选择增删改查. 给出mysql文件,朋友们可以自己运行导入到自己的数据库中: /* Navicat MySQL Data Transfer Source Server : mysql S ...

  9. ASP.NET中使用Entity Framework开发增删改查的Demo(EF增删改查+母版页的使用)

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 这里是该项目的第二部分, 第一部分 第二部分(当前部分) 大完结版本 此Demo是新建了一个音乐类型的web,然后使用母版页 ...

随机推荐

  1. POJ 3735 Training little cats<矩阵快速幂/稀疏矩阵的优化>

    Training little cats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13488   Accepted:  ...

  2. 【HDU 6021】 MG loves string (枚举+容斥原理)

    MG loves string  Accepts: 30  Submissions: 67  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  3. HDU 6071 Lazy Running(最短路)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6071 [题目大意] 给出四个点1,2,3,4,1和2,2和3,3和4,4和1 之间有路相连, 现在 ...

  4. 【贪心】hdu4803 Poor Warehouse Keeper

    题意:一开始有1个物品,总价是1.你的一次操作可以要么使得物品数量+1,总价加上当前物品的单价.要么可以使得总价+1,物品数量不变.问你最少要几次操作从初始状态到达有x个物品,总价是y的状态.这里的y ...

  5. 斐波那契数列(python实现)

    描述 一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000. 输入 输入 ...

  6. Codeforces Round #302 (Div. 2) C. Writing Code 简单dp

    C. Writing Code Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544/prob ...

  7. Codeforces Round #300 B. Quasi Binary 水题

    B. Quasi Binary Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/probl ...

  8. 破解ZendStudio 10.1

    破解文件的网盘地址: http://pan.baidu.com/share/link?shareid=3562282358&uk=1543766223  

  9. Centos7 内核从3.10升级到4.12过程

    http://blog.csdn.net/youshijifen/article/details/73472434

  10. 创建自己的Repo Server

    非常久曾经出于好奇细致了解了下Repo及server的原理,可是今天突然发现有些忘了.于是想记录下来. Repo机制 Repo是google官方为管理Android项目开发出来的一个软件. 我们先来看 ...