Обновить поле записей с помощью PreImage
как я могу использовать preImage для обновления значения в динамическом 365 с помощью плагина, я уже написал часть кода, но не могу его завершить
У меня есть поле с названием price, я хочу отредактировать ее значение с помощью PreImage.
это код, я поставил комментарий над кодом preImage
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
namespace ProjectsTask
{
public class Price : IPlugin
{
public void Execute(IServiceProvider ServiceProvider)
{
IPluginExecutionContext Context = (IPluginExecutionContext)
ServiceProvider.GetService(typeof(IPluginExecutionContext));
Entity entity = (Entity)Context.InputParameters["Target"];
IOrganizationServiceFactory ServiceFactory =
(IOrganizationServiceFactory)ServiceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService Service = ServiceFactory.CreateOrganizationService(Context.UserId);
QueryExpression qe = new QueryExpression();
qe.EntityName = "cree5_task";
ColumnSet col = new ColumnSet("cree5_taskprice");
qe.ColumnSet = col;
EntityReference entityRef = (EntityReference)entity.Attributes["cree5_projecttask"];
qe.Criteria.AddCondition("cree5_projecttask", ConditionOperator.Equal, entityRef.Id);
EntityCollection collection = Service.RetrieveMultiple(qe);
// here the code I want to complete
if (Context.MessageName == "update")
{
Entity preImage = Context.PreEntityImages["PreImage"] as Entity;
if (entity.Contains("cree5_taskprice"))
{
throw new InvalidPluginExecutionException("updated");
}
else if (preImage.Contains("cree5_taskprice"))
{
}
}
decimal totalPrice = 0m;
foreach (var e in collection.Entities)
{
var price = ((Money)e.Attributes["cree5_taskprice"]).Value;
totalPrice += price;
}
var Entity = Service.Retrieve("cree5_projects", entityRef.Id, new ColumnSet(true));
Entity["cree5_totalprice"] = new Money(totalPrice);
Service.Update(Entity);
}
}
}