0

我有一个“产品”对象,它必须更新数据库中的记录。通过“productCode”,我使用 Linq 检索要更新的对象。覆盖所有属性而不是关键属性然后保存更改的最优雅的方法是什么?

4

1 回答 1

0

无论如何,您都需要访问每个属性,因为您手动获取记录。我对最简单、最快和最干净的代码的建议:

code = productCode_toChange
using(Entity ent = new Entity())
{
var update = (from x in ent.Products where x.productCode == code select x).First();
update.property1 = product.property1;
update.property2 = product.property2;
// and so on for each property you change
ent.SaveChanges();
}

你当然可以尝试:

using(Entity ent = new Entity())
{  
var update = (from x in ent.Products where x.productCode == code select x).First();
update = product;
ent.SaveChanges();
}

但我几乎可以保证这不会起作用,因为产品肯定会有一个 id 属性,它会尝试写入更新,这将引发异常,因为案例产品是表实例的 LINQ 生成类型。

小心检查类型一致性。另请注意,您的产品代码的 SQL 类型不应该是文本,因为这种类型是无与伦比的

于 2013-03-01T09:13:57.690 回答