在 C# 中使用具有实体框架的类对象更新记录

本文关键字:框架 对象 新记录 更新 实体 | 更新日期: 2023-09-27 17:56:05

我有一个包含许多字段的实体类。为了简单起见,让我们假设该类定义如下:

public partial class Branches
{
    public int num { get; set; }
    public string name { get; set; }
    public string street { get; set; }
    public string city { get; set; }

在我的 API 类中,我想定义一个用于更新此类型记录的函数。由于创建一个函数来单独更新每个字段对于我的应用程序来说似乎是一个相当大的开销,我决定定义一个更新所有字段的函数。是否可以将函数接收的对象直接分配给用于更新的对象,如下所示?

void updateBranch(Branches branch)
{
  using (var dbContext = new entitiesContext())
  {
    var result = dbContext.Branches.SingleOrDefault(b => b.num == branch.num);                                                
    if (result != null)
    {
      **result = branch;**                        
      dbContext.SaveChanges();
    }
  }
}

我正在使用实体框架版本 6.0

在 C# 中使用具有实体框架的类对象更新记录

是的,您可以使用以下代码使用它

void updateBranch(Branches branch)
{
    using (var dbContext = new entitiesContext())
    {
        dbContext.Branches.Attach(branch);
        dbContext.Entry(branch).State = EntityState.Modified;              
        dbContext.SaveChanges();
    }
}

将实体附加到 DBContext 时,实体框架知道此实例存在于数据库中,并将执行更新操作。