在 C# 中显示来自 CRM 的超过 5000 条记录

Show more than 5000 records from CRM in C#

我试图了解 FetchXml 的工作原理(或任何其他方法),因为我想检索和处理超过 5000 条记录的限制,CRM returns 在下面的 api 调用中。

我的基地url是这样的:http://crm.domain.com:1234/api/data/v8.0/

资源是:emails

查询选项为:$top=50000&$filter=description ne null and not contains(sender, '@not-interesting.com')

我正在尝试从 https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg327917(v=crm.8)?redirectedfrom=MSDN

但是我在创建这样的 OrganizationServiceProxy 对象时遇到了问题:

var creds = new ClientCredentials();
creds.UserName.UserName = CrmApiUsername;
creds.UserName.Password = CrmApiPassword;

using (var _serviceProxy = new OrganizationServiceProxy(
            new Uri(CrmApiBaseAddress), null, creds, null))
        {
            // This statement is required to enable early-bound type support.
            _serviceProxy.EnableProxyTypes(); // ...

我遇到一个错误:

Metadata contains a reference that cannot be resolved: 'http://crm.domain.com:1234/data/v8.0/?wsdl&sdkversion=90'.' WebException: The remote server returned an error: (404) Not Found.

你混淆了这两个:

  1. Web API - 在 v8.0
  2. 之后可用
  3. 2011 端点 - 现在已弃用,但可以使用很长时间

Read more

当你 use web api 时 url 会像:https://yourcrm.crm#.dynamics.com/api/data/v8.0/

如果 Organization Service Proxy 仍然是 2011 年的终点:https://yourcrm.crm.dynamics.com/XRMServices/2011/Organization.svc

为了打破 5000 条记录的限制并获得超过 5k 条记录,必须使用分页概念。 How to fetch more than 5000 entities from CRM

更多想法,我已经在中回答了其他选项。