c# – 如何检查是否定义了字段?
作者:互联网
在this blog中,它显示了如何检索字段的元数据.
我想知道如何检查(除了上面结合try-catch-statement之外)是否存在字段.
原因是当我执行QueryExpression时,我需要知道要在ColumnSet中包含哪些列.
现在的Q& D代码是这样的.
private bool DoesFieldExist(String entityName, String fieldName)
{
try
{
RetrieveAttributeRequest req = new RetrieveAttributeRequest();
req.EntityLogicalName = entityName;
req.LogicalName = fieldName;
RetrieveAttributeResponse resp = (RetrieveAttributeResponse)service.Execute(req);
}
catch (Exception) { return false; }
return true;
}
解决方法:
private bool DoesFieldExist(String entityName, String fieldName)
{
RetrieveEntityRequest request = new RetrieveEntityRequest
{
EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Attributes,
LogicalName = entityName
};
RetrieveEntityResponse response
= (RetrieveEntityResponse)service.Execute(request);
return response.EntityMetadata.Attributes.FirstOrDefault(element
=> element.LogicalName == fieldName) != null;
}
> EntityFilters要求您使用Microsoft.Xrm.Sdk.Metadata进行添加;如果你不喜欢我的例子中的显式引用(以及你不喜欢它,因为它很难看),以便正常工作.
>我更喜欢使用FirstOrDefault而不是SingleOrDefault.虽然在这种情况下它不会给你任何问题(属性是否存在),在其他情况下,如果有多个元素满足条件,你可能会得到一个异常(如果你在多个属性上寻找匹配或者其他可能导致这种情况的东西).
标签:c,metadata,dynamics-crm-2011 来源: https://codeday.me/bug/20190718/1493981.html