Связанные записи деятельности - PullRequest
0 голосов
/ 16 декабря 2011

Так вот в чем дело: я создал собственную сущность "new_ligneContrat", которая имеет отношение один ко многим с другой настраиваемой сущностью "new_produit".

Вот цель: когда новая запись"new_ligneContrat" ​​создан, он должен получить записи "new_produit" для "new_ligneContrat" ​​перед ним.Плагин построен на "new_ligneContrat.

Мне было интересно, может ли это сделать FetchExpression + last (), но сейчас я не нашел правильного решения ...

Заранее спасибо!

Edit1: Мы решили пойти на отношение к n, поэтому я сделал следующее:

QueryExpression query = new QueryExpression();
                    query.EntityName = "new_produit";
                    query.ColumnSet = new ColumnSet("new_produitid");
                    Relationship relationship = new Relationship();

                    relationship.SchemaName = "new_new_lignecontrat_new_produit";
                    RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection();
                    relatedEntity.Add(relationship, query);
                    RetrieveRequest request = new RetrieveRequest();
                    request.RelatedEntitiesQuery = relatedEntity;
                    request.ColumnSet = new ColumnSet("new_lignecontratid");
                    request.Target = new EntityReference
                    {
                        Id = first.Id,
                        LogicalName = first.LogicalName

                    };

                    RetrieveResponse response = (RetrieveResponse)service.Execute(request);
    if (((DataCollection<Relationship, EntityCollection>)(((RelatedEntityCollection)(response.Entity.RelatedEntities)))).Contains(new
> Relationship("new_new_lignecontrat_new_produit")) &&
> ((DataCollection<Relationship,
> EntityCollection>)(((RelatedEntityCollection)(response.Entity.RelatedEntities))))[new
> Relationship("new_new_lignecontrat_new_produit")].Entities.Count > 0)
>                         {
>                             response.Results.Remove("new_produitid");
>                             response["new_lignecontratid"] = new EntityReference(target.LogicalName, target.Id);

Это правильно?

1 Ответ

0 голосов
/ 16 декабря 2011

В зависимости от того, на какой стадии исполнения плагина работает ваш плагин (до проверки, до / после операции), один из вариантов - выполнить запрос LINQ, который зависит от текущего времени или свойства CreatedOn новая запись new_ligneContrat и вызов метода First для получения последней записи new_produit. Я включил макет ниже.

DateTime d = DateTime.Now;
// or...DateTime d = targetEntity.Attributes["CreatedOn"].Value;

var usersSettings = (from lc in osc.CreateQuery<new_ligneContrat>()
                    join p in osc.CreateQuery<new_produit>() on lc.new_produitId equals p.new_produitId.Id
                    where lc.CreatedOn < d
                    orderby lc.CreatedOn descending
                    select p).First();
...