使用lambda表达式以通用形式更新表记录

本文关键字:更新 记录 lambda 表达式 使用 | 更新日期: 2023-09-27 18:00:35

这是我的代码,它成功地更新了tableBrand表的记录,但我想以更规范的形式更新我的记录。

public bool Update(tableBrand brand)
{                
    if (brand == null)
    {
        throw new ArgumentNullException("brand");
    }
    tableBrand tmpBrand = Get(brand.BrandID);
    if (tmpBrand != null)
    {
        tmpBrand.BrandName = brand.BrandName;
        plaDatabaseEntities.SaveChanges();
    }
    return true;
}

注意:
这里只有两列BrandName和BrandID,所以我们可以正常更新它。但假设有一个表中有25列,然后我们必须手动为中的每一列赋值。但我不想像上面那样更新我的表记录。我想更新表记录如下代码和描述。这里Get(brand.BrandID)返回tableBrand的一个对象。

public bool Update(tableBrand brand)
{        
   if (brand == null)
   {
       throw new ArgumentNullException("brand");
   }
   tablebrand tmpbrand = Get(brand.brandID);
   if (tmpbrand != null)
   {
       tmpbrand = brand;
       plaDatabaseEntities.SaveChanges();
   }
   return true;
}

正如我所知,若我们想更新表的任何记录,那个么我们必须有那个记录id来触发查询并从数据库中获取数据。在上面的代码中,我可以使用brand.brandID从数据库中获取记录。但在这里,我想如上所述分配类似于tmpbrand = brand;的tmpbrand对象,但当时的问题是tmpbrand在这里被重写了,有些我无法以上述方式更新我的记录。

我希望有一种lambda表达式的方法,如果我们得到brand对象除brandID之外的所有字段,并将除brandID之外的所有域分配给tmpbrand,那么我可以解决这个问题,但我没有得到如何使用lambda表达式或Linq从brand对象中得到除brandID之外的所有文件,并将所有文件分配给除brandID之外的tmpbrand的答案。

如果有人能解决这个问题,请帮助我…

使用lambda表达式以通用形式更新表记录

我不是Linq To Sql的专家,但我认为你有两个选择:

  1. 当调用Update方法时,brand对象仍然附加到数据上下文。如果为true,则不必将其值复制到另一个对象。Linq To Sql为您跟踪更改。另请参见此示例
  2. 当调用Update方法时,brand对象不是附加到数据上下文。在这种情况下,您必须使用Attach方法,然后保存更改。同样,您不必将值从一个对象复制到另一个对象。另请参阅本文