上下文目前不跟踪实体

时间:2014-04-08 20:28:28

标签: c#-4.0 wcf-data-services

我正在使用WCF DataService和AutoMapper来映射对象。

当我获得单个实体时,下面的示例工作正常。

BOND contextBond = this.agent.Context.BONDS.Where(x => x.SECURITY_ID == Security.SECURITY_ID).FirstOrDefault();
Mapper.Map<BondItem, BOND>(this.Bond, contextBond);
this.agent.Context.UpdateObject(contextBond);

以下是List Object的实现。我收到异常&#34;上下文当前没有跟踪实体。&#34; 在最后一行

List<SECURITY_XREF> contextXREF = this.agent.Context.SECURITY_XREF.Where(x => x.SECURITY_ID == Security.SECURITY_ID).ToList();
Mapper.Map<List<SecurityXrefItem>, List<SECURITY_XREF>>(this.Xref, contextXREF);
this.agent.Context.UpdateObject(contextXREF);

任何想法如何解决问题?换句话说,如何将列表对象传递给UpdateObject方法。

THX

2 个答案:

答案 0 :(得分:2)

DataServiceContext.UpdateObject只接受单个实体对象,您必须在列表中的每个对象上调用一次。 DataServiceContext.SaveChanges会通过一次调用将所有更改保存到服务器。

foreach (var entity in list)
{
    context.UpdateObject(entity);
}
context.SaveChanges()

答案 1 :(得分:0)

foreach (var entity in list)
{
    if(!context.IsAttached(entity)) context.Attach(entity);
    context.UpdateObject(entity);
}
context.SaveChanges()