我编写了代码来检查 CRM 中是否存在记录。问题是 IOrganisationService.Retrieve 在找不到记录时返回错误而不是空值。我希望找不到多条记录,我不想先使用 try catch,然后再使用 catch 中的错误。
using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, credentials, null))
{
IOrganizationService service = (IOrganizationService)serviceProxy;
//Get record
var record = service.Retrieve(entryId, guid, new ColumnSet(true)); //switch to var if no work
//Check if record is not null/empty
recordExists = !String.IsNullOrWhiteSpace(record.Id.ToString()); //<- does the record exist
}
建议?
最佳答案
Retrieve
方法假定具有给定 ID 的记录实际存在于系统中。一般来说,它只会在两种情况下失败:
- 该记录已被其他用户或进程删除。
- 用户没有足够的读取权限。
当您需要查询可能不存在的数据或查询可以产生零、一个或多个记录时,请使用QueryExpression
查询;您可以使用 RetrieveMultiple
方法发出这些查询。如果愿意,您还可以使用 LINQ for CRM,它基本上包装了 QueryExpression
功能。
关于c# - IOrganisationService.Retrieve 记录不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954462/