我使用Silverlight o数据服务与我的应用程序中的crm 2011进行交互 当我尝试将数据保存在实体SalesOrder中时,如下所示:
Private void beginSave()
{
SalesOrder orderHeader = new SalesOrder();
orderHeader.TransactionCurrencyId = new EntityReference(){ Id = new Guid("77D695B5-ACB4-E111-97BC-00155D55B216"), LogicalName="transactioncurrency" };
orderHeader.AccountId = new EntityReference() { Id = new Guid(MyClassGeneralOrder.customerId), LogicalName = "account" };
orderHeader.Name = "My Name";
Money totalAmount = new Money(); Money totalAmountBase = new Money();
Money totalTaxe = new Money(); Money totalAmountLessFreight = new Money();
totalAmount.Value = (decimal)MyClassGeneralOrder.InvoiceTotal;
totalAmountBase.Value = (decimal)MyClassGeneralOrder.totalRetail;
totalTaxe.Value = (decimal)MyClassGeneralOrder.totalCharges;
totalAmountLessFreight.Value = (decimal)MyClassGeneralOrder.totalNet;
orderHeader.TotalAmount = totalAmount;
orderHeader.TotalAmount_Base = totalAmountBase;
orderHeader.TotalTax = totalTaxe;
orderHeader.TotalAmountLessFreight = totalAmountLessFreight;
orderHeader.Description = element.Name;
orderHeader.PriceLevelId = new EntityReference() { Id = new Guid("03C5C4CB-EBD0-E111-8140-00155D55B216"), LogicalName="pricelevel" };
_context.AddToSalesOrderSet(orderHeader);
_context.BeginSaveChanges(SaveCallback, orderHeader);
}
private void SaveCallback(IAsyncResult result)
{
_context.EndSaveChanges(result);
}
在我的函数EndSaveChanges(结果)中,我收到以下错误消息:«货币不能为空»。 我不明白为什么,因为我的“orderHeader.TransactionCurrencyId”字段不为空。
答案 0 :(得分:0)
我假设所有其他货币字段都已填充?
你有任何一个机会因你的问题而被解雇,这会引发异常。这似乎总是咬我。尝试禁用除您正在处理的插件之外的所有其他插件......
如果您仍然遇到问题,请启用crm服务器端跟踪。您将获得更好的错误信息。使用CRM诊断工具打开跟踪日志记录:http://crmdiagtool2011.codeplex.com
答案 1 :(得分:0)
大多数情况下你的Guid是错的,结果是null。确保它是您正在使用的正确GUID。对该实体运行高级查找并找到正确的GUID。对GUID进行硬编码并不是一个好主意。如果将解决方案部署到其他组织,则无效。