c# - 可以在 CRM 之外生成实体 ID 吗?

标签 c# dynamics-crm microsoft-dynamics xrm

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

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

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

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

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

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

但是,我看到了一种可以大大简化整个过程的方法:

与其在数据库中使用主键 (id) 并在单独的列中跟踪 CRM ID (new_myentityid),不如摆脱id-columns 并将 CRM-ID-Column (new_myentityid) 作为表的主键,并在插入新记录时设置它 (newid()),所以从数据库的角度来看,基本上用 new_myentityid 代替 id。然后,我可以通过 ExecuteMultipleRequest 结合 UpsertRequest 批量更新插入。

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

问题

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

最佳答案

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

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

我唯一的意见是不要自己生成 GUID。让 CRM 为您生成它们,因为它可以更好地保持所有内容的顺序和索引。

See this blog entry on MSDN for further detail

关于c# - 可以在 CRM 之外生成实体 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803567/

相关文章:

c# - VS 代码错误 "The .NET CLI tools cannot be located..."

c# - WPF 自定义复合用户控件

c# - MS CRM - 预创建插件不会更改属性值

javascript - 在 Dynamics 365 XRM Web API 中创建记录时无法设置多选选项字段

dynamics-crm - 微软动态 CRM 2011

C# Mutex 总是卡在 WaitOne 上

c# - 第二个线程在第一个线程释放之前进入锁

continuous-integration - CRM 2011在线插件上传程序以支持CI

dynamics-crm - 如何在 Dynamics CRM 中创建站点地图?

带有 NAV Dynamics Web 服务的 C# 插入枚举类型对象