Linq to sql 使用显式运算符进行Linq更新

Linq to sql 使用显式运算符进行Linq更新,linq-to-sql,Linq To Sql,我正试图用一个显式的演员阵容对linq进行更新,但这些变化并没有提交 这是密码 Image update = db.Images.Where(i => i.ImageId == imageWithChanges.ImageId).SingleOrDefault(); update = (Image)imageWithChanges; db.SubmitChanges(); 我的image类中有一个显式运算符。有人能帮忙吗 谢谢你的电话 update = (Image)imageWit

我正试图用一个显式的演员阵容对linq进行更新,但这些变化并没有提交

这是密码

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

update = (Image)imageWithChanges;

db.SubmitChanges();
我的image类中有一个显式运算符。有人能帮忙吗

谢谢你的电话

update = (Image)imageWithChanges;
没有任何改变。它只是交换变量更新所指向的东西。如果您想实际更改图像,可能需要从imageWithChanges中复制每个属性以进行更新

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

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

你说你修好了,但不说怎么修好的


我同意鲁本的观点,对于所有其他人来说,你必须附上它。它给您的错误是有效的,您必须处理并发性检查(使用时间戳或版本号)或让最后一个进入wins(通过为所有实体的属性将UpdateCheck设置为false)。

这需要更多的定义,从imageWithChanges的声明开始。另外,您可以使用赋值来更改linq to sql类的值吗?我想你必须一个接一个地去做改变(虽然不确定)。尼克欢呼。My imageWithChanges是我的域对象,其中包含更新的值。我基本上是从数据库中获取图像对象,然后转换对数据库图像对象进行更改的域对象。我希望我不必逐个属性循环。谢谢Ruben,但是当我添加附加时,它给了我一个错误“一个实体只有在声明版本成员或没有更新检查策略的情况下才能附加为修改而没有原始状态。”谢谢或你的帮助,我已经修复了它。对不起,我以为我已经修复了这个问题。这是我的代码图像UpdateImage=(图像)图像;使用(OrebroDataContext db=new OrebroDataContext()){db.Images.Attach(updateImage,true);db.Products.AttachAll(updateImage.Products,true);db.SubmitChanges();}我有一些产品挂起了我的图像对象,但我一直收到一个使用中的密钥错误。有什么想法吗?伙计们,我肯定已经修好了。问题是我忘了在我的一个数据库表中添加时间戳列。一旦我做到了,一切都很顺利。Doh。为每个人的帮助干杯