0

我使用 Silverlight o-data 服务与我的应用程序中的 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(结果)中,我收到此错误消息: : « The Currency Cannot Be null »。 我不明白为什么,因为我的“orderHeader.TransactionCurrencyId”字段不为空。

4

2 回答 2

0

大多数情况下,您的 Guid 是错误的,它会导致 null。确保它是您正在使用的正确 GUID。针对实体运行高级查找并找到正确的 GUID。硬编码 GUID 不是一个好主意。如果您将解决方案部署到其他组织,它将无法正常工作。

于 2013-12-17T00:18:02.967 回答
0

我假设您所有其他货币字段都已填充?

任何机会你有另一个插件因为你的抛出异常而被触发。这似乎总是在咬我。尝试禁用除您正在使用的插件之外的所有其他插件...

如果仍有问题,请打开 crm 服务器端跟踪。您将获得更好的错误信息。使用 CRM 诊断工具打开跟踪日志记录:http ://crmdiagtool2011.codeplex.com

于 2012-12-21T15:46:57.050 回答