使用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
的答案。
如果有人能解决这个问题,请帮助我…
我不是Linq To Sql的专家,但我认为你有两个选择:
- 当调用Update方法时,brand对象仍然附加到数据上下文。如果为true,则不必将其值复制到另一个对象。Linq To Sql为您跟踪更改。另请参见此示例
- 当调用Update方法时,brand对象不是附加到数据上下文。在这种情况下,您必须使用Attach方法,然后保存更改。同样,您不必将值从一个对象复制到另一个对象。另请参阅本文