2011-08-12 1 views
1

Я имею дело с пользовательским (расширенным) свойством объекта Entity (email) в контексте подключаемого модуля и, несмотря на то, что подход работает для создания (.Add()) он не предназначен для обновлений (и не связан). Вот фактический код:Как обновить настраиваемое свойство Dynamics CRM 4.0 в контексте IPlugin

public class EmailPreCreateHandler : IPlugin 
{ 
     DynamicEntity dynamicEntity; 

     if (context.InputParameters.Properties.Contains("Target") 
      && context.InputParameters.Properties["Target"] is DynamicEntity) 
     { 
      dynamicEntity = (DynamicEntity)context.InputParameters.Properties["Target"]; 

      if (dynamicEntity.Name != EntityName.email.ToString()) { return; } 
     } 
     else { return; } 

     try 
     { 
      if (dynamicEntity.Properties.Contains("new_property1") 
       || dynamicEntity.Properties.Contains("new_property2")) 
      { 
       var new_property3 = new CrmBooleanProperty("new_property3", new CrmBoolean(true)); 
       dynamicEntity.Properties.Add(new_property3); 
      } 
     } 
     catch (SoapException exception) 
     { 
      throw new InvalidPluginExecutionException(
       "An error occurred with the plug-in.", exception); 
     } 
    } 
} 

Мне было интересно, если я должен сделать что-то подобное, чтобы заставить его работать?

dynamicEntity.Properties.Remove(new_property3); 
dynamicEntity.Properties.Add(new_property3); 

Сведения о регистрации

(Монтаж)

  • Расположение: База данных

(Step)

  • сообщение: Создать
  • Первичный Entity: электронная почта
  • Secondary Entity: нет
  • Фильтрация атрибутов: Все атрибуты
  • Запуск в контексте пользователя: Вызов пользователя
  • Выполнение заказа: 1
  • троеборью Pipeline Этап исполнения: Предварительная стадия

Я по-настоящему признателен за любые отзывы. Спасибо большое заблаговременно,

+1

Что такое регистрация? Предварительно сообщение? Какое сообщение? – ccellar

+0

@ckeller: спасибо за вклад - я обновил сообщение с информацией о регистрации плагина. –

ответ

2

Похоже, вы бы добавили/обновили new_property3, если new_property1 или new_property2 присутствуют.

if (dynamicEntity.Properties.Contains("new_property1") || dynamicEntity.Properties.Contains("new_property2")) 
{ 
    dynamicEntity["new_property3"] = new CrmBoolean(true); 
} 

Если доступ dynamicEntity["new_property3"] для записи доступа к ней либо создать свойство, если оно не существует или перезаписать существующее значение.

+0

Большое спасибо за вклад - ваш пример кода действительно лучше выражает концепцию create/overwrite - я определенно реорганизую реализацию, используя ваш подход. –

+1

@Nano, пожалуйста. Меня интересуют темы Dynamics CRM, посмотрите [предложение Microsoft Dynamics CRM] (http://area51.stackexchange.com/proposals/32455/microsoft-dynamics-crm?referrer=jHf4j_VcIgLKPEy52a9q2g2) – ccellar

 Смежные вопросы

  • Нет связанных вопросов^_^