第一種:
先從數據庫中取出數據,然后再更新字段。效率較低,需要2次數據庫操作;
using (var db = new Entities()) { var data = db.Member.Find(5); data.Name = "new name"; db.SaveChanges(); }
生成的sql語句是:
select * from Member where ID=5 update Member set Name = 'new name' where ID=5
第二種:
根據主鍵更新某個字段。如下雖然定義的變量里有password,但是沒有設置ismodified=true,所以在savechanges時只會更新name的值
using (var db = new Entities()) { var data = new Member() { ID = 5, Name = "aa", Password = "aa" }; db.Entry(data).State = EntityState.Unchanged;// 或db.Member.Attach(data); db.Entry<Member>(data).Property("Name").IsModified = true; db.SaveChanges(); }
生成的sql語句是:
update Member set Name='aa' where ID=5
第三種:
根據主鍵更新所有字段,如下雖然未定義password,但到數據庫中會更新為null
using (var db = new ScratchDB2Entities()) { var data = new Member() { ID = 5, Name = "aa" }; db.Entry(data).State = EntityState.Modified; db.SaveChanges(); }
生成的sql語句是:
update Member set Name='aa',Password=null where ID=5
