0
我有一个'产品'对象必须更新数据库中的记录。 通过'productCode',我使用Linq检索要更新的对象。 这是最优雅的方式来覆盖属性,但不是关键的然后保存更改?Linq - 更新所有的属性,但不是密钥
我有一个'产品'对象必须更新数据库中的记录。 通过'productCode',我使用Linq检索要更新的对象。 这是最优雅的方式来覆盖属性,但不是关键的然后保存更改?Linq - 更新所有的属性,但不是密钥
无论如何,当您手动获取记录时,您将需要访问每个属性。我的建议的最简单,最快,最干净的代码:
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属性它将尝试写入更新,这将会抛出一个异常,因为case product是LINQ生成的表实例类型。
小心检查类型一致性。还要注意,你的SQL-Type产品代码不应该是文本,因为这种类型是无法比拟的
任何代码示例都要说清楚。 – ssilas777 2013-03-01 09:12:19
AutoMapper非常适合您。 – 2013-03-01 17:33:29