我需要定期(即每晚)将外部数据与CRM单向同步。
这包括创建新记录以及更新现有记录。
这意味着,我必须跟踪由同步过程创建的CRM实体的ID。
我已经设法通过数据库表中的行在CRM中创建和更新记录,所以这不是问题。
目前,我的映射表具有以下列id
:插入新行时设置的表主键new_myentityid
:映射实体的主要属性,在同步过程创建记录后设置new_name
等:记录属性的值
但是,我看到了一种大大简化整个过程的方法:
除了可以在数据库中没有PrimaryKey(id
)并在单独的列中跟踪CRM ID(new_myentityid
)之外,我还可以摆脱id
列并使CRM-ID-表的列(new_myentityid
)主键,并在插入新记录(newid()
)时进行设置,因此从数据库角度来看,基本上将id
替换为new_myentityid
。然后,我可以通过ExecuteMultipleRequest
与UpsertRequest
组合批量上传。
这样,我将在每个映射表中保存一列,以及在创建CRM ID后存储它们的逻辑。
题
这是可以接受的还是有什么应该让我避免这种情况?
最佳答案
免责声明:我不知道这样做的最佳实践,所以这只是我对Dynamics进行多次开发后的个人看法。
我认为使用CRM实体GUID作为主键是一个好主意。它不那么复杂,并且可以在SQL中很好地处理。我假设您数据库中的列为uniqueidentifier
。
我唯一的意见是不要自己生成GUID。让CRM为您生成它们,因为它可以更好地保持所有顺序和索引。
See this blog entry on MSDN for further detail