Dynamics crm 如何访问Microsoft CRM 2011插件中的1:N关系实体?

Dynamics crm 如何访问Microsoft CRM 2011插件中的1:N关系实体?,dynamics-crm,dynamics-crm-2011,Dynamics Crm,Dynamics Crm 2011,我有一个与自定义董事会席位实体具有1:N关系的自定义董事会实体。我在董事会实体上有一个更新后插件,它试图循环遍历与被更新董事会相关的所有董事会席位。我已经尝试了一个前图像和后图像,两者的关系都是空的,即使董事会有几个与之相关的董事会席位 var board = EntityImage.ToEntity<my_boards>(); foreach (var seat in board.board_to_boardseat_relationship) { // Process e

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

var board = EntityImage.ToEntity<my_boards>();
foreach (var seat in board.board_to_boardseat_relationship)
{
    // Process each seat
}
var board=EntityImage.ToEntity();
foreach(董事会中的var席位。董事会席位与董事会席位的关系)
{
//处理每个座位
}
我使用的是强类型实体,
board.board\u-to\u-boardseat\u关系的类型是
System.Collections.Generic.IEnumerable
。看起来,关系在pre或post映像中都没有填充。当我注册图像时,我选择了所有属性。知道如何建立这种关系吗?

Mike

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

实体PostImage=(实体)m_localcontext.PluginExecutionContext.PostEntityImages[“PostImage”]; my_board=postImageToEntity()

var seatsList=orgContext.CreateQuery().Where(c=>c.boardId.Id==board.boardId.ToList();
如果(seatsList.Count>0)
{
foreach(我的董事会席位列表中的席位)
{
//你的代码在这里
}
}

它可用于日志记录。为什么不呢?这是因为foreach在列表为空时不会执行吗?如果您想用
If
执行其他操作,比如捕获一些日志记录,那么就可以了。但是,如果只是为了避免对空集合进行迭代,那么就没有必要了,因为
foreach
中不会执行任何内容。例如。
 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
      }
 }