Как запросить связанные заметки?

У меня есть метод, который связывает аннотацию с заказом на продажу:

    /// <summary>   Links. </summary>
    /// <param name="noteGuid">         Unique identifier for the note. </param>
    /// <param name="salesOrderGuid">   Unique identifier for the sales order. </param>
    /// <returns>   A SalesOrder. </returns>
    public SalesOrder Link(Guid noteGuid, Guid salesOrderGuid)
    {
        var associateRequest = new AssociateRequest
                                   {
                                       Target =
                                           new EntityReference(
                                               SalesOrder.EntityLogicalName,
                                               salesOrderGuid),
                                       RelatedEntities =
                                           new EntityReferenceCollection
                                               {
                                                   new EntityReference(
                                                       Annotation
                                                           .EntityLogicalName,
                                                       noteGuid)
                                               },
                                       Relationship = new Relationship("SalesOrder_Annotation")
                                   };

        _xrmServiceContext.Execute(associateRequest);

        return GetSalesOrderByOrderGuid(salesOrderGuid);
    }

Я пытаюсь протестировать этот метод с помощью следующего теста:

    [Test]
    public void Link_ExistingRecordHavingNotes_LinksItemCorrectly()
    {
        using (var xrmServiceContext = new XrmServiceContext(_fakeOrganizationService))
        {
            // Arrange
            var salesOrderGuid = Guid.NewGuid();
            var note1 = new Annotation { Id = Guid.NewGuid(), Subject = "this is note1" };
            var salesOrder = new SalesOrder
                                 {
                                     Id = salesOrderGuid
                                 };

            _fakeContext.Initialize(new List<Entity> { salesOrder, note1 });

            this._fakeContext.AddRelationship(
                "SalesOrder_Annotation",
                new XrmFakedRelationship
                    {
                        Entity2LogicalName = "annotation",
                        Entity2Attribute = "salesorderid",
                        Entity1LogicalName = "salesorder",
                        Entity1Attribute = "SalesOrder_Annotation.Id",
                        RelationshipType = XrmFakedRelationship.enmFakeRelationshipType.OneToMany
                    });

            var sut = new SalesOrderService(xrmServiceContext);

            // Act
            var linkedRecord = sut.Link(note1.Id, salesOrderGuid);

            var annotations = xrmServiceContext.AnnotationSet.FirstOrDefault(note => note.ObjectId.Id == salesOrderGuid);

...

Я не понимаю почему annotations нулевой. Когда я связываю объект с другим объектом, используя вышеуказанный запрос на ассоциирование, не должен ли он связать 2 объекта через ObjectId?

1 ответ

Решение

Аннотации необходимо создавать с использованием сообщения Create с явным свойством ObjectId, а не с AssociateRequest.

Пример:

https://community.dynamics.com/crm/b/mahenderpal/archive/2012/12/09/create-and-attach-text-file-to-notes-in-microsoft-crm-2011

Тогда вы сможете запросить их.

Другие вопросы по тегам