EF如何正确的进行实体中修改
2024-10-19 09:59:13
本文转载: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
最新文章
- 学点HTTP知识
- 垂直居中display:table;
- [转载]How To Add Swap on Ubuntu 12.04
- boost 源码编译 的 Makefile.am写法备份
- linux设备驱动第五篇:驱动中的并发与竟态
- D3D11_USAGE使用
- UPUPW PHP环境集成包
- Gentoo解决Windows双系统时间不同步的问题
- Android studio中添加外部的jar包
- pandas pivot_table 活学活用实例教程
- Redis入门指南之二(安装及配置)
- ILA用法
- Android UI组件----用相对布局RelativeLayout做一个登陆界面
- 通过小实例谈谈javascript的间隔调用和延时调用
- EPANET头文件解读系列6——HASH.H
- C#抽象类与接口的区别【转】
- JS中的call、apply、bind 用法解疑
- gitlab 安装提速
- Linux 虚拟机虚拟网卡问题导致无法连接问题
- Collection接口与Iterator接口
热门文章
- DTD约束文件
- HNOI2008玩具装箱 (斜率优化)
- Ajax时代 SQL注入依然是隐患
- 建立自己的bin目录,在当前路径运行shell脚本
- bzoj 2815 [ZJOI2012]灾难(构造,树形DP)
- 深入浅出 JavaScript 对象 v0.5
- 使用weka进行Cross-validation实验
- 45种Javascript技巧大全(转)
- asp.net 分析器错误消息: 文件.aspx.cs”不存在错误
- POJ3468--A Simple Problem with Integers(Splay Tree)