Nei*_*eil 16 dynamics-crm-2011
我使用以下代码更新实体.
Service.Update(_policy);
Run Code Online (Sandbox Code Playgroud)
其中policy是使用CrmSvcUtil.exe生成的类
public partial class new_policy : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged
Run Code Online (Sandbox Code Playgroud)
我使用LINQ检索策略,然后更新一个属性(EntityReference),然后尝试更新
当此代码运行时,我收到以下错误消息:
EntityState必须设置为null,Created(用于创建消息)或Changed(用于更新消息)
还有其他实体以我可以更新的相同方式生成.
我试过了
_policy.EntityState = EntityState.Changed
Run Code Online (Sandbox Code Playgroud)
但后来我收到一条消息说
该实体是只读的,并且不能修改"EntityState"属性.请使用上下文来更新实体.
有谁知道是什么原因造成的?
cce*_*lar 20
您必须告诉您crmContext(使用适当的名称)如何处理更改.
你应该添加crmContext.UpdateObject(contact); 在crmContext.SaveChanges()之前;
KCl*_*ugh 10
我有同样的问题.我改用了
context.Update(object)
Run Code Online (Sandbox Code Playgroud)
至
context.UpdateObject(object)
Run Code Online (Sandbox Code Playgroud)
它起作用了.
要避免此问题,您只需使用update-helper-objects而不是使用检索到的记录:
var policyUpdater = new Policy { Id = _policy.Id, FieldToUpdate = "newValue" };
service.Update(policyUpdater);
Run Code Online (Sandbox Code Playgroud)
注意:将忽略未设置的update-helper-object的属性.更新不会将相应的记录字段设置为null
| 归档时间: |
|
| 查看次数: |
17373 次 |
| 最近记录: |