Как запросить связанные заметки?
У меня есть метод, который связывает аннотацию с заказом на продажу:
/// <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.
Пример:
Тогда вы сможете запросить их.