标签:
1 #region 修改--官方的修改是,先查询,然后修改 2 /// <summary> 3 /// 修改--官方的修改是,先查询,然后修改 4 /// </summary> 5 static void Modify() 6 { 7 //此时返回的是一个Student类的代理类(包装类)对象 8 Studnet stu = db.Studnets.Where(s => s.s_ID == 14).ToList().FirstOrDefault(); 9 10 //此时其实操作的是代理类的属性,这些属性,会将只设置给内部的Student对象对应的属性,同时标记此属性为已修改状态,另外要注意,这里不只是给这个属性做个标记,同时也对当前对象做了一个标记,标记当前对象已经被修改过。 11 //把id=14的名字改为 12 stu.s_Name = "梁山伯"; 13 stu.s_Sex = "男"; 14 15 //此时EF上下文,会检查容器内部所有的对象,找到标记为已修改的对象属性,生成对应的Update语句执行。。 16 //保存到数据库 17 db.SaveChanges(); 18 19 Console.WriteLine("修改成功"); 20 21 } 22 #endregion
修改的时候不用Attach()方法。 Attach方法,返回的值是实体类对象,看下图:
//执行这句话之后,没有生成SQL语句,这只是把对象加入到上下文中,没有告诉上下文是哪个属性被修改了。。
标签:
原文地址:http://www.cnblogs.com/caofangsheng/p/4525928.html