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