private static void Method08() { Member member = new Member { Id = 1, Password = "******" + DateTime.Now.Second }; using (var db = new DataContext()) { //先查询一次,让上下文中存在相同主键的对象 Member oldMember = db.Members.Single(m => m.Id == 1); Console.WriteLine("更新前:{0}。", oldMember.AddDate); try { DbEntityEntry<Member> entry = db.Entry(member); entry.State = EntityState.Unchanged; entry.Property("Password").IsModified = true; } catch (InvalidOperationException) { ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext; ObjectStateEntry objectEntry = objectContext.ObjectStateManager.GetObjectStateEntry(oldMember); objectEntry.ApplyCurrentValues(member); objectEntry.ChangeState(EntityState.Unchanged); objectEntry.SetModifiedProperty("Password"); } db.Configuration.ValidateOnSaveEnabled = false; int count = db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; Console.WriteLine("操作结果:{0}", count > 0 ? "更新成功。" : "未更新。"); Member newMember = db.Members.Single(m => m.Id == 1); Console.WriteLine("更新后:{0}。", newMember.Password); } }
private static void Method09() { Member member = new Member { Id = 1, Password = "******" + DateTime.Now.Second }; using (var db = new DataContext()) { //先查询一次,让上下文中存在相同主键的对象 Member oldMember = db.Members.Single(m => m.Id == 1); Console.WriteLine("更新前:{0}。", oldMember.AddDate); db.Update<Member>(m => new { m.Password }, member); int count = db.SaveChanges(false); Console.WriteLine("操作结果:{0}", count > 0 ? "更新成功。" : "未更新。"); Member newMember = db.Members.Single(m => m.Id == 1); Console.WriteLine("更新后:{0}。", newMember.Password); } }
private static void Method06() { Member member = new Member { Id = 1, Password = "******" + DateTime.Now.Second }; using (var db = new DataContext()) { DbEntityEntry<Member> entry = db.Entry(member); entry.State = EntityState.Unchanged; entry.Property("Password").IsModified = true; db.Configuration.ValidateOnSaveEnabled = false; int count = db.SaveChanges(); db.Configuration.ValidateOnSaveEnabled = true; Console.WriteLine("操作结果:{0}", count > 0 ? "更新成功。" : "未更新。"); Member newMember = db.Members.Single(m => m.Id == 1); Console.WriteLine("更新后:{0}。", newMember.Password); } }