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

时间:2014-04-29 07:25:23

标签: c# linq lambda

这是我的代码,它成功更新了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在这里写了一些,我无法按照上述方式更新我的记录。 / p>

我希望如果我们得到除brand之外的brandID个对象的所有字段并且将所有字段分配给tmpbrand除了brandID之外,有一种方法可以使用lambda表达式我可以解决这个问题但我没有得到答案如何从brand brandID以外的tmpbrand对象获取所有归档,并将所有归档分配给brandID除{{1}使用lambda表达式或Linq。

如果有人解决了这个问题,请帮助我......

1 个答案:

答案 0 :(得分:0)

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

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