Linq使用显式运算符更新

时间:2009-10-03 20:36:37

标签: linq-to-sql

我正在尝试使用linq使用explict强制进行更新,并且更改不提交。

这是代码

Image update = db.Images.Where(i => i.ImageId == imageWithChanges.ImageId).SingleOrDefault();

update = (Image)imageWithChanges;

db.SubmitChanges();

我的图像类中有一个显式运算符。有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

该行

update = (Image)imageWithChanges;

没有改变任何事情。它只是交换变量 update 指向的东西。如果您想要实际更改图像,则可能必须将每个属性从 imageWithChanges 复制到更新

另一种方法是将 imageWithChanges 附加到db.Images并说它是一个修改过的实例:

db.Images.Attach((Image)imageWithChanges, true); // true means "it's modified"
db.SaveChanges();

答案 1 :(得分:0)

你说你修好了,但不要说怎么做。

对于所有读过这篇文章的人,我同意鲁本的意见,你必须附上它。它给你的错误是有效的,你必须处理并发检查(带有时间戳或版本号)或者让最后一个获胜(通过将UpdateCheck设置为所有实体的属性为false)。