.net - EntityFramework .net 4 用一个简单的方法更新实体

标签 .net asp.net-mvc entity-framework

我正在看这个问题:ADO.net Entity Framework: Update only certian properties on a detached entity .这对我来说是一个很大的帮助。我现在知道我需要在对其进行更改之前附加一个实体。但是我该怎么做:

我有一个 MVC 网站,一个包含以下字段的客户更新页面:ID、名称、地址等。我的 MVC 正在将其解析为 Customer 实体。我如何执行以下操作:

  • 更新我的实体并保存对它的更改。
  • 如果自加载实体以来已进行更改,请捕获异常。
  • 最佳答案

    尝试这样的事情(伪代码,我可能记错了一些方法名称):

    public void Update(Customer entity)
    {
    
       using (MyContext ctx = new MyContext())
       {
          // Create a stub entity and attach it
          Customer db = new Customer {ID = entity.ID};
          ctx.Customers.Attach(db); // ctx.AttachTo("Customers", db) in 3.5 sp1
    
          // ApplyPropertyChanges in 3.5 Sp1
          ctx.ApplyCurrentValues(entity); 
          ctx.SaveChanges();
       }
       ...
    }
    

    此代码使用 Stub Entity诡计。如果您有关系需要告诉 EF 有关原始实体的更多信息,请查看上面的博客文章了解更多信息,因为您也可以使用 stub 来做到这一点。

    或者,如果您根本不关心并发性,您可以这样做:
    public void Update(Customer entity)
    {
       using (MyContext ctx = new MyContext())
       {
          // pull the entity from the database
          Customer db = ctx.Customers.First(c => c.ID == entity.ID);
    
          // ApplyPropertyChanges in 3.5 Sp1
          ctx.ApplyCurrentValues(entity); 
          ctx.SaveChanges();
       }
    }
    

    希望这可以帮助

    亚历克斯·詹姆斯

    Entity Framework Tips

    关于.net - EntityFramework .net 4 用一个简单的方法更新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343530/

    相关文章:

    c# - 当非虚拟化 DataGrid 中有大量行时,WPF 应用程序 DataGrid 控制窗口切换滞后

    c# - 当我向 Controller 添加新的依赖项时单元测试中断

    asp.net-mvc - redirectToAction 导致空模型

    c# - Entity Framework 6 迁移 - 生成 "SchemaName"."TableName"

    .net - 升级 Team Foundation 服务 (TFS)

    .net - OData Web API 操作参数反序列化

    c# - 壁纸应用程序的代码示例?

    javascript - 使用 Jquery 根据复选框选择更高效地添加和删除类

    entity-framework - Entity Framework - 相关的 ICollection 被物化为 HashSet

    c# - 在 EntityFramework 6.0 和 .NET 4.5 中使用 oracle sdo_geometry