Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用lambda表达式以通用形式更新表记录_C#_Linq_Lambda - Fatal编程技术网

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

C# 使用lambda表达式以通用形式更新表记录,c#,linq,lambda,C#,Linq,Lambda,这是我的代码,它成功地更新了tableBrand表的记录,但我想以更规范的形式更新我的记录 public bool Update(tableBrand brand) { if (brand == null) { throw new ArgumentNullException("brand"); } tableBrand tmpBrand = Get(brand.BrandID); if (tmpBrand

这是我的代码,它成功地更新了
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对象,比如
tmpbrand=brand如上所述,但当时的问题是
tmpbrand
在这里被过度写入,有些我无法以上述方式更新我的记录

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


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

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

  • 当调用Update方法时,brand对象仍然附加到数据上下文。如果为true,则不必将其值复制到另一个对象。LINQtoSQL为您跟踪更改。另见此
  • 调用更新方法时,品牌对象未附加到数据上下文。在这种情况下,您必须使用方法,然后保存更改。同样,您不必将值从一个对象复制到另一个对象。另见此

  • 品牌对象是如何创建的?您是从数据库中读取的吗?如果是,如何读取?brand是tableBrand的对象。tableBrand是您创建的类还是由Visual Studio自动生成的?它是由Visual Studio自动生成的