Reputation: 33
I have Guid and Type Code Of Entity, How Can I Retrieve entity Without Logical Name By Type Code.
public void GetEntityReferenceByDynamicUrl(string dynamicUrl)
{
Uri entityUri = new Uri(dynamicUrl);
var parameter = HttpUtility.ParseQueryString(entityUri.Query);
if (parameter.AllKeys.Contains("id") && parameter.AllKeys.Contains("etc"))
{
var guid = new Guid(parameter.Get("id"));
var etc = parameter.Get("etc");
}
}
Upvotes: 0
Views: 634
Reputation: 6180
Looks like you're using C#
so you can do this with a metadata call
// get your ETC as an Integer
var ETC = (int)parameter.Get("etc");
var entityLogicalName = "";
// Query setup
// Columns: "LogicalName"
// Criteria: "ObjectTypeCode eq ETC"
var metaQuery = new EntityQueryExpression
{
Properties = new MetadataPropertiesExpression
{
AllProperties = false,
PropertyNames = { "LogicalName" }
},
Criteria = new MetadataFilterExpression
{
FilterOperator = LogicalOperator.And,
Conditions = { new MetadataConditionExpression("ObjectTypeCode", MetadataConditionOperator.Equals, ETC) }
}
};
var response = (RetrieveMetadataChangesResponse)XrmService.Execute(new RetrieveMetadataChangesRequest{ Query = metaQuery });
if (response.EntityMetadata.Count == 1)
{
entityLogicalName = response.EntityMetadata.First().LogicalName;
}
else
{
// 0 or multiple results. Handle appropriately
}
Hope this helps
Upvotes: 1