dynamics-crm-2011 - CrmServiceContext 未加载 CRM 2015 Online 的关系数据

标签 dynamics-crm-2011 dynamics-crm dynamics-crm-2013 dynamics-crm-2015

我正在转换/升级应用程序以使用 CRM 2015 Online 而不是 CRM 2011。但是它无法使用 CRM 2015 通过连接加载关系数据。但是它正在与 CRM 2011 配合使用。我已经创建了实体使用最新的 CRM 2015 SDK 的包装器。

检索订单的代码

var context = GetNewContext();

var ordersToProcess = (from o in context.SalesOrderSet
                       where o.SalesOrderId == orderId
                       select o).Distinct().ToList();

foreach (var salesOrder in ordersToProcess)
{
    // *** Error Here ***
    // *** CRM 2015 Code is throwing error here because transactioncurrency_salesorder is null ***
    var urrencyCode =
             salesOrder.transactioncurrency_salesorder.ISOCurrencyCode;
}

使用 CRM 2011 代码生成连接

public static CrmServiceContext GetNewContext(CrmConnection conn)
{
    var context = new CrmServiceContext(conn);
    return context;
}

使用 CRM 2015 在线代码生成连接

public static IOrganizationService GetNewService(CrmConnection conn)
{
    var service = new OrganizationService(conn);
    return service;
}

public static CrmServiceContext GetNewContext(CrmConnection conn)
{
    var context = new CrmServiceContext(GetNewService(conn));
    return context;
}

最佳答案

transactioncurrency_salesorder 是销售订单和货币之间的 N:1 关系。

如果您的上下文继承自 OrganizationServiceContext(我假设您的 2015 代码就是这种情况),则默认情况下不会加载这些关系。您可以通过调用LoadProperty来延迟加载它们在访问关系之前:

context.LoadProperty(salesOrder, "transactioncurrency_salesorder");

如果您的上下文继承自 CrmOrganizationServiceContext(我认为您的 2011 代码就是这种情况),relationships are automatically lazy loaded .

或者,如果您不需要实际加载货币本身(并且只需要货币的名称或 Guid),则可以使用 EntityReference TransactionCurrencyId。这始终是设置的,也无需调用 LoadProperty 。你可以例如获取货币名称如下:

salesOrder.TransactionCurrencyId.Name

关于dynamics-crm-2011 - CrmServiceContext 未加载 CRM 2015 Online 的关系数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875010/

相关文章:

azure - Dynamics crm 365 获取 azure adal 授权码

c# - 使用 Contains 的 .Where 子句的 Lambda 表达式

history - MS CRM 2011 中的用户日志记录历史记录?

dynamics-crm - Microsoft Dynamic CRM 插件调试

dynamics-crm-2011 - 从插件内部调用 ExecuteMultipleRequest 有用吗?

c# - 线程安全的数据库访问策略

dynamics-crm-2011 - 将 EntityReference 转换为 Entity

javascript - 在 CRM2011-2013 中使用 REST 端点创建电子邮件事件

javascript - 如何用 JavaScript 和 n :m relationship 链接两条记录

deployment - 如何在 Dynamics CRM 2011 中导出/导入业务单位和安全角色?