MVC的EF编辑,不用查询直接修改
2015-07-27 11:22
211 查看
EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态;
一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行;
此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。
缺点:修改先还要查询,难受~~~~
//T_TEST2(ID,NAME)
////edit 先查询再修改
EFDBReferenceEntities EFDB = new EFDBReferenceEntities();
T_TEST2 t2 = new T_TEST2();
t2.ID = 5;
T_TEST2 temp = EFDB.T_TEST2.Where(u => u.ID == t2.ID).FirstOrDefault();
temp.NAME = "YYYY";
EFDB.SaveChanges();
//edit 直接修改,不需查询
EFDBReferenceEntities EFDB = new EFDBReferenceEntities();
T_TEST2 t2 = new T_TEST2();
t2.ID = 5;
t2.NAME = "HHHHH";
//1 添加到管理容器中,并获得沩包装类对象
DbEntityEntry<T_TEST2> entry = EFDB.Entry<T_TEST2>(t2);
//如果使用entry附加实体对象的数据容器中,则需手动设置 实体包装类的对象 的状态为unchanged
//如果使用attach就不需要这句
entry.State = EntityState.Unchanged;
//2 标识实体对象的某些属性已经被修改
entry.Property("NAME").IsModified = true;
//3 更新到数据库
EFDB.SaveChanges();
一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行;
此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。
缺点:修改先还要查询,难受~~~~
//T_TEST2(ID,NAME)
////edit 先查询再修改
EFDBReferenceEntities EFDB = new EFDBReferenceEntities();
T_TEST2 t2 = new T_TEST2();
t2.ID = 5;
T_TEST2 temp = EFDB.T_TEST2.Where(u => u.ID == t2.ID).FirstOrDefault();
temp.NAME = "YYYY";
EFDB.SaveChanges();
//edit 直接修改,不需查询
EFDBReferenceEntities EFDB = new EFDBReferenceEntities();
T_TEST2 t2 = new T_TEST2();
t2.ID = 5;
t2.NAME = "HHHHH";
//1 添加到管理容器中,并获得沩包装类对象
DbEntityEntry<T_TEST2> entry = EFDB.Entry<T_TEST2>(t2);
//如果使用entry附加实体对象的数据容器中,则需手动设置 实体包装类的对象 的状态为unchanged
//如果使用attach就不需要这句
entry.State = EntityState.Unchanged;
//2 标识实体对象的某些属性已经被修改
entry.Property("NAME").IsModified = true;
//3 更新到数据库
EFDB.SaveChanges();
相关文章推荐
- hdoj 3342 Legal or Not(拓扑排序)
- 偶数求和
- 用Photoshop绘制复古风的邮票和邮戳
- HDOJ N!Again(第一周)
- 手动调动编译器、链接器编程
- Markdown语法帮助
- AssertValid和Dump函数的应用
- hdu 4336 概率dp + 状压
- VS2012用正则表达式统计行数
- 最小费用最大流入门
- Train Problem I(栈)
- Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
- QT5.2中新建lib库,在引用时出现error LNK2019: 无法解析的外部符号错误
- windows和linux中UDP编程
- 模拟退火 hdu1109 Run away
- hdu5303(15年多校集训第二轮1004题delicious apple)
- 免费真实增加网站访问量的方法
- ContentObserver 监听(监听自己数据库的变化)
- Java字节码指令集的使用详细
- 验证码