Dynamics CRM - C # Borra Plugin

objetivo:

      En el desarrollo de Dynamics CRM, el más común se logra Crear Plugin Plugin de actualización y una variedad de opciones de personalización, por supuesto, también hay casos de uso Eliminar Plugin en el presente documento, esto simplemente hablar acerca de cómo usar Borrar Plugin.

escena:

      En el desarrollo de CRM, entre la mesa y la mesa establecido por campo de búsqueda, ahora en cuenta las necesidades escenario siguiente:

    Un producto como la existencia de la Tabla A Tabla B y un sub-producto, para establecer un campo en la tabla de consulta Una Tabla B, y la Tabla A, hay un campo para contar el número de sub-productos (es decir, el número de registro que señala en la Tabla B propia), entonces este tiempo, cuando se elimina el borrado) un sub-producto de registro (, las estadísticas necesidad de ser un padre correspondientes actualizaciones del producto, a continuación, se puede utilizar el plugin de eliminación para lograr esta demanda.

implementación:

      Código es relativamente simple, se determina si o Mensaje contexto Borrar lata cuando se ejecuta:

1          público  void Ejecutar (IServiceProvider ServiceProvider)
 2          {
 3              ITracingService trazador = (ITracingService) serviceProvider.GetService ( typeof (ITracingService));
4              contexto IPluginExecutionContext = (IPluginExecutionContext) serviceProvider.GetService ( typeof (IPluginExecutionContext));
5              IOrganizationServiceFactory fábrica = (IOrganizationServiceFactory) serviceProvider.GetService ( typeof (IOrganizationServiceFactory));
6              servicio IOrganizationService = factory.CreateOrganizationService (context.UserId);
7  
8             tratar 
9              {
 10                  // TODO: hacer cosas 
11                  si (context.MessageName.Equals ( " Crear " ))
 12                  {
 13                      tracer.Trace ( " fase " + context.Stage);
14                      interruptor (context.Stage)
 15                      {
 16                          caso  20 :
 17                              CreatePlugin (trazador, el contexto, el servicio, de fábrica);
18                              descanso ;
19                          caso  40 :
 20                             romper ;
21                          por defecto :
 22                              descanso ;
23                      }
 24                  }
 25                  otra cosa  si (context.MessageName.Equals ( " Actualización " ))
 26                  {
 27                      interruptor (context.Stage)
 28                      {
 29                          casos  20 :
 30                              UpdatePlugin (trazador, contexto, el servicio, la fábrica);
31                              descanso ;
32                          caso  40 :
 33                              descanso;
34                          por defecto :
 35                              descanso ;
36                      }
 37                  }
 38                  más  si (context.MessageName.Equals ( " Borrar " )) // Para Delete Plugin
 39                  {
 40                      interruptor (context.Stage)
 41                      {
 42                          caso  10 :
 43                              DeletePlugin (trazador, el contexto, el servicio, de fábrica) ;
44                              descanso ;
45                      }
 46                 }
 47  
48              }
 49              capturas (Exception e)
 50              {
 51                  tiro  nueva InvalidPluginExecutionException (e.Message);
52              }
 53  
54          }

 

      Cómo obtener toda la información en el actual registro de solicitud de detele, el código es el siguiente, primero en llegar EntityReference el objeto, y luego a través del objeto de encontrar el registro correspondiente:

1          privada  vacío DeletePlugin (trazador ITracingService, IPluginExecutionContext contexto, el servicio IOrganizationService, fábrica IOrganizationServiceFactory)
 2          {
 3              tracer.Trace ( " Start DeletePlugin () " );
4              try 
5              {
 6                  entidad EntityReference = ((EntityReference) context.InputParameters [ " objetivo " ]);
7                  Entities.new_entity = service.Retrieve (entity.LogicalName, entity.Id, nuevo ColumnSet ( verdadero )) ToEntity <Entities.new_entity>. ();// obtener el registro de toda la información de la corriente, y luego se puede encontrar el producto padre de acuerdo campo de búsqueda . 8             }
 . 9 la captura (Exception ex)
 10             {
 . 11 SI (ex.GetType (). El nombre == " InvalidPluginExecutionException " )
 12 es                 {
 13 es de banda nueva nueva InvalidPluginExecutionException (ex.Message + Environment.NewLine);
 14                 }
 15 el otro 16                 {
 17. cadena la errorText = ex.Message.ToString ();
 18 es . 19 el tiempo (ex.InnerException =! 
nulo ) 20 { 21 errorText + = ex.InnerException.Message; 22 ex = ex.InnerException; 23 } 24 arrojan nueva Excepción ( " Error: " + textoError + " \ n " ); 25 } 26 } 27 tracer.Trace ( " End DeletePlugin () " ); 28 }

Nota: CRM en la petición de supresión aplicación, y la Solicitud de Creación / actualización es diferente de la actual Registro de la Entidad objeto de obtener el Contexto de eliminación, pero EntityReference objeto, si elenco de objetos Entity se quejará, a fin de recordar al método Execute en este código de borrado:

Entidad Entidad = (entidad) context.InputParameters [ " Target " ];

 

      Finalmente, registrado con el mensaje Delete puede utilizar 10 Etapa (Pre-validación) o 20 Etapa (Pre-operación) están generalmente se recomienda utilizar 10 Etapa, porque en la etapa 20 que haya eliminado alguna relación, tal como el tipo de partylist campo, mientras que el 20 obtener valor.

 

   

Supongo que te gusta

Origin www.cnblogs.com/Sunny20181123/p/12007160.html
Recomendado
Clasificación