实体框架5更新记录 [英] Entity Framework 5 Updating a Record

查看:173
本文介绍了实体框架5更新记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在探索的编辑不同的方法/在ASP.NET MVC3环境实体框架5的内部更新记录,但到目前为止,他们没有勾选所有我需要的箱子。我会解释为什么。

I have been exploring different methods of editing/updating a record within Entity Framework 5 in an ASP.NET MVC3 environment, but so far none of them tick all of the boxes I need. I'll explain why.

我发现三种方法,我会提到的利弊:

I have found three methods to which I'll mention the pros and cons:

方法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×查询数据库装入原然后更新

方法2 - 加载原始记录,设置更改后的值

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    db.Entry(original).CurrentValues.SetValues(updatedUser);
    db.SaveChanges();
}

赞成


  • 只有修改的属性将被发送到数据库

缺点


  • 正文需要包含每个属性

  • 2×查询数据库装入原然后更新

方法3 - 安装更新的记录,并设置状态EntityState.Modified

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();

赞成


    数据库
  • 1个查询来更新

缺点


  • 不能指定哪些属性更改

  • 正文必须包含每个属性

我的问题你们;有没有干净的方式,我可以做到这一点的一套目标?

My question to you guys; is there a clean way that I can achieve this set of goals?


  • 可以指定哪些属性来更改

  • 视图并不需要包含每个属性(如密码!)

  • 数据库
  • 1个查询来更新

我明白这是一个相当次要的事情指出,但我可能会丢失一个简单的解决了这一点。如果没有方法一会prevail; - )

I understand this is quite a minor thing to point out but I may be missing a simple solution to this. If not method one will prevail ;-)

推荐答案

您正在寻找的:

db.Users.Attach(updatedUser);
var entry = db.Entry(updatedUser);
entry.Property(e => e.Email).IsModified = true;
// other changed properties
db.SaveChanges();

这篇关于实体框架5更新记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆