【问题标题】:How to access 1:N relationship entities in a Microsoft CRM 2011 plugin?如何在 Microsoft CRM 2011 插件中访问 1:N 关系实体?
【发布时间】:2012-10-24 00:09:52
【问题描述】:

我有一个自定义 Board 实体,它与自定义 Board Seat 实体具有 1:N 关系。我在董事会实体上有一个更新后插件,它试图遍历与正在更新的董事会相关的所有董事会席位。我已经尝试了前后图像,但两者的关系都是空的,即使董事会有几个与之关联的董事会席位。

var board = EntityImage.ToEntity<my_boards>();
foreach (var seat in board.board_to_boardseat_relationship)
{
    // Process each seat
}

我正在使用强类型实体,board.board_to_boardseat_relationship 的类型是System.Collections.Generic.IEnumerable&lt;my_boardseat&gt;。似乎关系根本没有在前图像或后图像中填充。当我注册图像时,我选择所有属性。知道如何填充这种关系吗?

【问题讨论】:

    标签: dynamics-crm dynamics-crm-2011


    【解决方案1】:

    迈克,

    它不会被填充,因为所有属性都只是实体的属性。您必须使用某种检索功能来获取与该特定板关联的所有席位。它们永远不会包含在您的后图像或前图像(或目标)中以下是一些示例代码:

    实体 PostImage = (Entity)m_localcontext.PluginExecutionContext.PostEntityImages["PostImage"]; my_board board = PostImage.ToEntity();

     var seatsList = orgContext.CreateQuery<my_boardseat>().Where(c => c.boardId.Id == board.boardId).ToList();
    
     if (seatsList.Count > 0)
     {
          foreach (my_boardseat seat in seatsList)
          {
            //Your Code Here
          }
     }
    

    【讨论】:

    • 可用于日志记录。为什么不如果?是不是因为列表为空时foreach没有被执行?
    • 如果你想用if 做一些别的事情,比如捕获一些日志记录,那就太好了。但是,如果只是为了避免遍历空集合,则没有必要,因为 foreach 中的任何内容都不会被执行。例如。 stackoverflow.com/questions/3914346/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多