【发布时间】:2015-11-22 08:42:46
【问题描述】:
我最近一直在尝试使用 CRM CrmSvcUtil.exe 的 SDK 工具中自动生成的代码来更新 CRM 2015 实体中的记录 使用代码
CrmConnection con = new CrmConnection("CRM");
XrmServiceContext ctx = new XrmServiceContext(con);
var nn = ctx.TestEntity.Where(x => x.Name== "12132").FirstOrDefault();
nn.Name="test";
ctx.SaveChanges();
但是在保存更改后所做的所有更改都被忽略了,我注意到更改记录的实体状态仍然没有改变。
当使用ctx.UpdateObject(nn); 和ctx.Update(mm); 时,应用程序会抛出以下错误:
格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://schemas.microsoft.com/xrm/2011/Contracts/Services:request 时出错。 InnerException 消息是“第 1 行位置 13371 中的错误。元素“http://schemas.datacontract.org/2004/07/System.Collections.Generic:value”包含映射到名称“http://schemas.microsoft.com/xrm/7.1/Contracts:ConcurrencyBehavior”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑更改 DataContractResolver 上 ResolveName 方法的实现,以返回名称“ConcurrencyBehavior”和命名空间“http://schemas.microsoft.com/xrm/7.1/Contracts”的非空值。”。有关详细信息,请参阅 InnerException。
或者这个
EntityState 必须设置为 null、Created(用于创建消息)或 Changed(用于更新消息)
当尝试手动更改实体状态时出现此错误
实体是只读的,不能修改“EntityState”属性。改为使用上下文来更新实体。
知道我可以使用 ctx.AddObject() 使用相同的自动生成代码创建新记录
【问题讨论】:
标签: dynamics-crm crm dynamics-crm-2015