这有点过分但是这里......
我目前正在开发一个通过其XRMServices与Microsoft CRM 2011连接的项目。
我的问题是某些货币(a.k.a货币)值会在[AccountBase]表中更新,而其他货币则不会。 [revenue]字段已更新,但[aging30]值不是。这两个领域都有相同的主要属性:
尽管该字段可能只读,但是可能导致这种情况的原因是什么?我认为我可能与字段级安全性或用户安全性有关,但似乎不是这样。我对系统拥有足够的权限,并且字段属性未设置为禁用此类操作。 我能想到的唯一另一件事是,它可能是一个禁止我更新此值的工作流程,但我再也看不到系统中与此相关的任何内容。在运行下面的代码之后,实体的收入值会更新,并且在dbo.AccountBase中可见,但[aging30]字段不是。 XRM Web服务不会生成任何异常。
图1 - 检索帐户
public Entity GetByAccountCode(string accountCode, bool allColumns = false)
{
if (string.IsNullOrEmpty(accountCode))
return default(Entity);
QueryExpression query = new QueryExpression("account");
query.ColumnSet = new ColumnSet(allColumns);
query.Criteria = new FilterExpression();
query.Criteria.AddCondition("accountnumber", ConditionOperator.Equal, accountCode);
EntityCollection results = _service.RetrieveMultiple(query);
if (results.Entities.Count == 0)
return default(Entity);
if (results.Entities.Count > 1)
throw new DuplicateRecordsOnAccountCodeException(accountCode, "Duplicate records on AccountCode found"); // needs to be changed appropriatly
return results[0] as Entity;
}
图2 - 更新帐户**
account.Attributes["revenue"] = new Money((decimal)100m); // This value is updated
account.Attributes["aging30"] = new Money((decimal)200m); // This value is not
_service.Update(entity);