本文转载:http://www.cnblogs.com/Ruiky/archive/2012/12/29/2839011.html

不推荐方式一:

思路:先从ObjectContext取出实体,然后将前台传过来的DTO属性对应赋值到我们的实体上,然后调用ObjectContext的保证修改方法。

但是这种方式是最不提倡的,因为这样每次修改前都得先将数据查出来,经过SqlProfiler追踪,这么一个操作要对数据库进行两次的连接。这是不可忍受的!

推荐方式二:

思路:无需先查出实体,因为我们知道EF通过ObjectStateManage来控制添加、修改、删除队列以及实体的状态,我们所有可以通过在直接将DTO转化成实体,然后将实体对应的队列中,并 且我们手动的将实体的状态处理好,再调用ObjectContext的保证修改方法,这样就避免了先查询后修改,两次数据库连接的问题了。实例代码如下:

static void Main(string[] args)
{
SchoolDBEntities schoolDB = new SchoolDBEntities();
//假设:网络传一个StudentDTO过来 ,将此DTO转化成 数据库实体
Student student = new Student();
student.Id = ;// 假设DTO传过来的值,主键必须存在,不然会报错的
student.Address = "北京上地1";
student.Name = "飞龙1";
student.Phone = ""; //先将实体附加到实体上下文中
schoolDB.Student.Attach(student);
//手动修改实体的状态
schoolDB.ObjectStateManager.ChangeObjectState(student, EntityState.Modified);
//保存回数据库
schoolDB.SaveChanges();
}

EF直接更新数据(不需查询)

http://jameszou.blog.51cto.com/2173852/1152743/

EF 增删改

http://www.cnblogs.com/gaobing/p/6001031.html

最新文章

  1. 学点HTTP知识
  2. 垂直居中display:table;
  3. [转载]How To Add Swap on Ubuntu 12.04
  4. boost 源码编译 的 Makefile.am写法备份
  5. linux设备驱动第五篇:驱动中的并发与竟态
  6. D3D11_USAGE使用
  7. UPUPW PHP环境集成包
  8. Gentoo解决Windows双系统时间不同步的问题
  9. Android studio中添加外部的jar包
  10. pandas pivot_table 活学活用实例教程
  11. Redis入门指南之二(安装及配置)
  12. ILA用法
  13. Android UI组件----用相对布局RelativeLayout做一个登陆界面
  14. 通过小实例谈谈javascript的间隔调用和延时调用
  15. EPANET头文件解读系列6——HASH.H
  16. C#抽象类与接口的区别【转】
  17. JS中的call、apply、bind 用法解疑
  18. gitlab 安装提速
  19. Linux 虚拟机虚拟网卡问题导致无法连接问题
  20. Collection接口与Iterator接口

热门文章

  1. DTD约束文件
  2. HNOI2008玩具装箱 (斜率优化)
  3. Ajax时代 SQL注入依然是隐患
  4. 建立自己的bin目录,在当前路径运行shell脚本
  5. bzoj 2815 [ZJOI2012]灾难(构造,树形DP)
  6. 深入浅出 JavaScript 对象 v0.5
  7. 使用weka进行Cross-validation实验
  8. 45种Javascript技巧大全(转)
  9. asp.net 分析器错误消息: 文件.aspx.cs”不存在错误
  10. POJ3468--A Simple Problem with Integers(Splay Tree)