@@ -64,15 +64,15 @@ public void Execute(IServiceProvider serviceProvider)
6464 var relatedEntitiesQuery = ( RelationshipQueryCollection ) context . InputParameters [ RelatedEntitiesQuery ] ;
6565 if ( relatedEntitiesQuery . Any ( ) )
6666 throw new NotImplementedException ( RelatedEntitiesQuery ) ;
67-
67+
6868 var retrieveResponse = ( RetrieveResponse ) service . Execute ( new RetrieveRequest
6969 {
7070 ColumnSet = ConversionExtensions . ConvertSchema ( columnSet , entityMap ) ,
7171 Target = ConversionExtensions . ConvertSchema ( target , entityMap ) ,
7272 } ) ;
7373
7474 var mappedEntity = ConversionExtensions . ConvertSchema ( retrieveResponse . Entity , entityMap ) ;
75- context . OutputParameters [ Entity ] = mappedEntity ;
75+ context . OutputParameters [ "BusinessEntity" ] = mappedEntity ;
7676 return ;
7777
7878 case "RetrieveMultiple" :
@@ -100,8 +100,43 @@ public void Execute(IServiceProvider serviceProvider)
100100 return ;
101101
102102 case "Create" :
103+ var createEntityMap = EntityMapFactory . Create ( entityMetadata , typeMapFactory , entityAlias : null ) ;
104+ var createTarget = ( Entity ) context . InputParameters [ Target ] ;
105+ var createReponse = ( CreateResponse ) service . Execute ( new CreateRequest
106+ {
107+ Target = ConversionExtensions . ConvertSchemaExternal ( createTarget , createEntityMap ) ,
108+ } ) ;
109+ context . OutputParameters [ nameof ( createReponse . id ) ] = createReponse . id ;
110+ return ;
111+
103112 case "Update" :
113+ var updateEntityMap = EntityMapFactory . Create ( entityMetadata , typeMapFactory , entityAlias : null ) ;
114+ var updateTarget = ( Entity ) context . InputParameters [ Target ] ;
115+
116+ tracing . Trace ( $ "{ updateTarget . LogicalName } { updateTarget . Id } ({ string . Join ( "," , updateTarget . Attributes . Select ( a => $ "{ a . Key } : { a . Value } ({ a . Value ? . GetType ( ) ? . Name } )") ) } )") ;
117+
118+ var convertedUpdateTarget = ConversionExtensions . ConvertSchemaExternal ( updateTarget , updateEntityMap ) ;
119+ tracing . Trace ( $ "{ convertedUpdateTarget . LogicalName } { convertedUpdateTarget . Id } ({ string . Join ( "," , convertedUpdateTarget . Attributes . Select ( a => $ "{ a . Key } : { a . Value } ({ a . Value ? . GetType ( ) ? . Name } )") ) } )") ;
120+
121+ var updateConcurrencyBehavior = ( ConcurrencyBehavior ) context . InputParameters [ nameof ( ConcurrencyBehavior ) ] ;
122+ var updateResponse = ( UpdateResponse ) service . Execute ( new UpdateRequest
123+ {
124+ Target = convertedUpdateTarget ,
125+ ConcurrencyBehavior = updateConcurrencyBehavior ,
126+ } ) ;
127+ return ;
128+
104129 case "Delete" :
130+ var deleteEntityMap = EntityMapFactory . Create ( entityMetadata , typeMapFactory , entityAlias : null ) ;
131+ var deleteTarget = ( EntityReference ) context . InputParameters [ Target ] ;
132+ var deleteConcurrencyBehavior = ( ConcurrencyBehavior ) context . InputParameters [ nameof ( ConcurrencyBehavior ) ] ;
133+
134+ var deleteResponse = ( DeleteResponse ) service . Execute ( new DeleteRequest
135+ {
136+ Target = ConversionExtensions . ConvertSchema ( deleteTarget , deleteEntityMap ) ,
137+ ConcurrencyBehavior = deleteConcurrencyBehavior ,
138+ } ) ;
139+ return ;
105140 default :
106141 throw new NotImplementedException ( $ "Message '{ context . MessageName } '") ;
107142 }
0 commit comments