
I need some help. This is the first QueryExpression I've used since i had to update my SDK's to 365.
I'm not even doing anything hard at this point, but if I use QueryExpression in the code (like I have done 100s of times before) I get an OrganizationServiceFault.
So here is the basic code (and it's truly basic at this point)
using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
namespace TrainerAppHistory.TransferHistory
{
///
/// PreOperationipmahr_trainerapplicationUpdate Plugin.
/// Fires when the following attributes are updated:
/// ipmahr_transferhistory
///
public class PreOperationipmahr_trainerapplicationUpdate : PluginBase
{
public PreOperationipmahr_trainerapplicationUpdate(string unsecure, string secure)
: base(typeof(PreOperationipmahr_trainerapplicationUpdate))
{
// TODO: Implement your custom configuration handling.
}
private readonly string preImageAlias = "PreImage";
protected override void ExecuteCrmPlugin(LocalPluginContext localContext)
{
if (localContext == null)
{
throw new InvalidPluginExecutionException("localContext");
}
IPluginExecutionContext context = localContext.PluginExecutionContext;
IOrganizationService server = localContext.OrganizationService;
Entity Training = (Entity)context.InputParameters["Target"];
Entity preImageEntity = (context.PreEntityImages != null && context.PreEntityImages.Contains(this.preImageAlias)) ? context.PreEntityImages[this.preImageAlias] : null;
EntityReference Contact = (EntityReference)preImageEntity.Attributes["ipmahr_contactid"];
bool transfer = Training.GetAttributeValue("ipmahr_transferhistory");
Guid recordID = Training.GetAttributeValue("ipmahr_trainerapplicationid");
Guid contactid = Contact.Id;
if (transfer == true)
{
QueryExpression TopRecord = new QueryExpression("ipmahr_trainerapplication");
TopRecord.ColumnSet = new ColumnSet("ipmahr_trainerapplicationid");
EntityCollection results1 = server.RetrieveMultiple(TopRecord);
if (results1.Entities.Count > 1)
{
Training.Attributes["new_comments"] = "found them all";
}
//End Code
}
}
}
}I went and moved the Update line outside of the QE and just used the QE to populate a variable. But the same issue happens. Just thought I'd update on what I've done so far.