如何查询链接的笔记?

时间:2017-03-06 22:59:36

标签: c# .net dynamics-crm-2011 fakeiteasy fakexrmeasy

我有一个方法可以将注释链接到销售订单:

    /// <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为空。 当我使用上述关联请求将实体链接到另一个实体时,它是否应该通过ObjectId链接这两个实体?

1 个答案:

答案 0 :(得分:1)

需要使用具有显式ObjectId属性的Create消息而不是AssociateRequest来创建注释。

前:

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

然后你就可以查询它们了。