Dynamics crm RetrieveMultipleRequest.MinActiveRowVersion这是什么以及何时不是-1

Dynamics crm RetrieveMultipleRequest.MinActiveRowVersion这是什么以及何时不是-1,dynamics-crm,Dynamics Crm,我一直在研究将增量更改与dynamics crm同步的方法 我无意中访问了RetrieveMultipleRequest的MinActiveRowVersion属性 var orgService = serviceProvider.GetOrganisationService(); using (orgService as IDisposable) { var accounts = orgService.RetrieveM

我一直在研究将增量更改与dynamics crm同步的方法

我无意中访问了RetrieveMultipleRequest的MinActiveRowVersion属性

        var orgService = serviceProvider.GetOrganisationService();
        using (orgService as IDisposable)
        {

            var accounts = orgService.RetrieveMultiple(new QueryExpression("account") { ColumnSet = new ColumnSet("accountid") });
            Console.WriteLine("min active is: " + accounts.MinActiveRowVersion);

        }
在我的测试过程中,这个属性总是返回“-1”,即使在我试图模拟后台正在进行的事务时也是如此,但这很难做到

我从SQL角度对MinActiveRowVersion的理解如下:-

[


所以我的问题是,有没有人能够确切地说明这个MinActiveRowVersion属性是什么,因为我在SDK文档中找不到任何有用的东西!

据我所知和经验,它从未被使用过,并且总是等于
-1
。在封面下,它被硬编码为
long
,并转换为
st当构建
EntityCollection
对象时,响铃
,因此它将始终是
-1

“最低活动行版本值”,这意味着它与SQL行版本相关,但CRM不使用此字段。它在CRM 2011和CRM 2013 SDK中定义相同

在CRM 4中,我们有
BusinessEntityCollection
,它是
EntityCollection
的前身。它有一个未使用的
字符串
属性,名为
版本


我的猜测是,当CRM 2011被设计时,它被添加了一些潜在的功能——这些功能没有生存下来——并且在它进入RTM之前从未被删除。一旦它被发布,产品团队就不想更改类定义和破坏现有代码,所以他们就把它留在那里,继续返回
-1

MinActive如果fetch查询包含属性min active row version=1,则在fetch响应中返回RowVersion。(在指定page和distinct属性的同一标记中。)

我们多年来一直依赖这种行为。(是的,我们使用它来同步更改。Rowversion似乎是唯一可靠的工具。请注意,并非所有动力学实体都有Rowversion列。例如,duplicaterule实体不使用它。对于此类实体,我们使用modifiedon列。)

以下是$MS文档中的一些引用:

  • @@DBTS=当前数据库最后使用的时间戳值
  • MIN_ACTIVE_ROWVERSION=列表中最低的ACTIVE ROWVERSION值 当前数据库;@@DBTS+1如果数据库中没有活动值 数据库
  • 如果rowversion值用于具有 尚未作出承诺

谢谢@nicknow,我怀疑这样的事情。在我看来,dynamics团队有点草率-他们至少应该将其标记为过时/不推荐。无论如何……谢谢你的回答。