我一直在研究将增量变化与动力学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来自: -
[http://technet.microsoft.com/en-us/library/bb839514.aspx][1]
所以我的问题是,是否有人能够确切地说明这个MinActiveRowVersion属性是什么,因为我在SDK文档中找不到任何有用的东西!
答案 0 :(得分:1)
据我所知和经验,它永远不会被使用,并且总是等于-1
。在封面下,它被硬编码为long
并在构建string
对象时转换为EntityCollection
- 因此它始终为-1
。
SDK defines it as "最低活动行版本值" ,这意味着它与SQL行版本相关,但CRM不使用此字段。它在CRM 2011和CRM 2013 SDK中的定义相同。
在CRM 4中,我们有BusinessEntityCollection
,这是EntityCollection
的前身。它有一个名为string
的未使用的Version
属性。
我的猜测,当CRM 2011被设计时,它被添加了一些潜在的功能 - 它们没有生存 - 并且在它进入RTM之前从未被删除过。一旦发布,产品团队就不想更改类定义并破坏现有代码,因此他们只是将其留在那里以便返回-1
。
答案 1 :(得分:0)
MinActiveRowVersion。 (在指定了页面和不同属性的同一标记中。)
我们多年来一直依靠这种行为。 (是的,我们将其用于更改同步。Rowversion似乎是唯一可靠的工具。请注意,并非所有Dynamics实体都具有Rowversion列。例如,重复规则实体不使用它。对于此类实体,我们使用Modifyon列。)>
以下是$ MS文档中的一些引文: