如何查询链接的笔记?
How to query for linked notes?
我有一个方法可以 link 销售订单的注释:
/// <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
为空。 当我 link 一个实体使用上述关联请求到另一个实体时,它不应该通过 ObjectId link 2 个实体吗?
需要使用带有显式 ObjectId 属性 而不是 AssociateRequest 的创建消息来创建注释。
例如:
那你就可以查询了。
我有一个方法可以 link 销售订单的注释:
/// <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
为空。 当我 link 一个实体使用上述关联请求到另一个实体时,它不应该通过 ObjectId link 2 个实体吗?
需要使用带有显式 ObjectId 属性 而不是 AssociateRequest 的创建消息来创建注释。
例如:
那你就可以查询了。