2013-03-01 33 views
0

我有一个'产品'对象必须更新数据库中的记录。 通过'productCode',我使用Linq检索要更新的对象。 这是最优雅的方式来覆盖属性,但不是关键的然后保存更改?Linq - 更新所有的属性,但不是密钥

+1

任何代码示例都要说清楚。 – ssilas777 2013-03-01 09:12:19

+0

AutoMapper非常适合您。 – 2013-03-01 17:33:29

回答

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属性它将尝试写入更新,这将会抛出一个异常,因为case product是LINQ生成的表实例类型。

小心检查类型一致性。还要注意,你的SQL-Type产品代码不应该是文本,因为这种类型是无法比拟的

相关问题