【发布时间】:2011-11-30 04:04:55
【问题描述】:
我对 Linq 和 C# 还很陌生,并且有一个问题给我带来了很多问题。
我有一些 XML 映射到 Linq 实体。我要做的是将原始记录加载到数据库中,然后根据 XML 实体对象更新该记录。
例子
Car objXml = getXml();
var dc = new carsdatacontext();
var curr = dc.car.firstordefault(c => c.id == "22");
objXml.id = 22;
dc.car = objXml;
dc.submitchanges();
基本上,我只想用我的 XML 对象中的数据覆盖我的数据库中的所有数据,但我不断收到如下错误。
如何使用新对象更新数据库,我是否必须复制它而不是设置它?
如果实体声明了版本成员或没有更新检查策略,则只能将其作为修改后的没有原始状态的实体附加。
【问题讨论】:
-
dc.car 不是整表,你只想更新一条记录?
-
dc.car 是一个表,是的,我只想更新一条记录。 objXml.id 只是我从原始 DB 对象 ID 分配给 XML 对象的主键。 ObjXml 和 dc.carr 都是相同的实体,只是具有不同的数据。 dc.car 来自数据库,objXml 是我想要覆盖 dc.car 然后更新记录的内容。所以 -- dc.car = objXML(是相同的类型,只是数据不同)
-
如果你想改变当前记录,那么你应该尝试像 curr = objXml;但我认为这行不通,您必须从 ObjXml 中一一更新当前记录数据。
-
不确定您的意思?将其附加到新上下文?
-
no curr is you car object from the database right, and objXml is your object from xml,现在你希望你的数据库对象具有与objXml对象相同的数据来实现这一点我想你会有设置每一个属性,例如 curr.Manufacturer = objXml.Manufacturer 如果你准备好了,只需调用 dc.submitchanges();
标签: c# linq-to-sql