我一直在探索在ASP.NET MVC3环境中在Entity Framework 5中编辑/更新记录的不同方法,但是到目前为止,它们都没有打勾我需要的所有框。我会解释原因。
我发现了三种方法的优缺点:
方法1-加载原始记录,更新每个属性
var original = db.Users.Find(updatedUser.UserId); if (original != null) { original.BusinessEntityId = updatedUser.BusinessEntityId; original.Email = updatedUser.Email; original.EmployeeId = updatedUser.EmployeeId; original.Forename = updatedUser.Forename; original.Surname = updatedUser.Surname; original.Telephone = updatedUser.Telephone; original.Title = updatedUser.Title; original.Fax = updatedUser.Fax; original.ASPNetUserId = updatedUser.ASPNetUserId; db.SaveChanges(); }
优点
缺点
方法2-加载原始记录,设置更改的值
var original = db.Users.Find(updatedUser.UserId); if (original != null) { db.Entry(original).CurrentValues.SetValues(updatedUser); db.SaveChanges(); }
方法3-附加更新的记录并将状态设置为EntityState.Modified
db.Users.Attach(updatedUser); db.Entry(updatedUser).State = EntityState.Modified; db.SaveChanges();
题
我对你们的问题;有没有一种干净的方法可以实现这组目标?
我知道这是一件非常小的事情,但是我可能会缺少一个简单的解决方案。如果不是,则以一种方法为准;-)
您正在寻找:
db.Users.Attach(updatedUser); var entry = db.Entry(updatedUser); entry.Property(e => e.Email).IsModified = true; // other changed properties db.SaveChanges();