可以在CRM之外生成实体的ID吗?

noz*_*man 2 c# microsoft-dynamics dynamics-crm xrm

我需要定期(即每晚)与CRM单向同步外部数据.

这包括创建新记录以及更新现有记录.

这意味着,我必须跟踪由同步过程创建的CRM实体的ID.

强调textI我已经设法从数据库表行创建和更新CRM中的记录,所以这不是问题.

目前,我的映射表具有以下列

  • id:插入新行时表的主键设置
  • new_myentityid:映射实体的主要属性,在同步过程创建记录之后设置
  • new_name etc:记录属性的值

但是,我认为有一种方法可以大大简化整个过程:

我没有id在数据库中拥有一个PrimaryKey()并new_myentityid在一个单独的列中跟踪CRM ID(),我还可以摆脱id-columns并制作表的CRM-ID-Column(new_myentityid)主键,插入新记录(当将其设置newid()),所以基本上代替idnew_myentityid从数据库的角度.然后我可以通过ExecuteMultipleRequest组合来批量upsert UpsertRequest.

这样,我会在每个映射表中保存一列,以及在创建它们之后存储CRM ID的逻辑.

这是可以接受的还是有什么东西可以让我避免这种情况?

Equ*_*lsk 6

免责声明:我不知道这方面的最佳实践,所以这只是我个人对于为Dynamics多次开发的问题的看法.

我认为使用CRM实体GUID作为主键是一个好主意.它不那么复杂,在SQL中处理得很好.我假设你的数据库中的列是uniqueidentifier.

我唯一的评论是不自己生成GUID.让CRM为您生成它们,因为它可以更好地保持所有顺序和索引.

有关更多详细信息,请参阅MSDN上的此博客条目