As a possible solution, I found that this information can be retrieved with the following query using the InfoProvider Query API::
public class ContentItemReferenceService(IInfoProvider<ContentItemReferenceInfo> contentItemReferenceInfoProvider)
{
public async Task<IEnumerable<Guid>> GetPagesLinkingContentItemIds(int contentItemId)
{
var query = contentItemReferenceInfoProvider.Get()
.Source(cir =>
cir.InnerJoin<ContentItemCommonDataInfo>(
ColumnName((ContentItemReferenceInfo x) => x.ContentItemReferenceSourceCommonDataID),
ColumnName((ContentItemCommonDataInfo x) => x.ContentItemCommonDataID))
.InnerJoin<ContentItemInfo>(
ColumnName((ContentItemCommonDataInfo x) => x.ContentItemCommonDataContentItemID),
ColumnName((ContentItemInfo x) => x.ContentItemID))
.InnerJoin<DataClassInfo>(
ColumnName((ContentItemInfo x) => x.ContentItemContentTypeID),
ColumnName((DataClassInfo x) => x.ClassID))
.InnerJoin<WebPageItemInfo>(
ColumnName((ContentItemInfo x) => x.ContentItemID),
ColumnName((WebPageItemInfo x) => x.WebPageItemContentItemID)))
.WhereEquals(ColumnName((DataClassInfo x) => x.ClassType), "Content")
.And()
.WhereEquals(ColumnName((DataClassInfo x) => x.ClassContentTypeType), "Website")
.And()
.WhereEquals(ColumnName((ContentItemReferenceInfo x) => x.ContentItemReferenceTargetItemID), contentItemId)
.Column(ColumnName((WebPageItemInfo x) => x.WebPageItemGUID))
.Distinct();
return await query.GetEnumerableTypedResultAsync(record => record.GetGuid(0));
}
private static string ColumnName<T>(Expression<Func<T, object>> expression) where T : BaseInfo => ObjectQueryHelper.GetFullColumnName(expression);
}
Is there a better way to do this?