【发布时间】:2019-11-25 05:31:32
【问题描述】:
我正在开发基于 Dynamics365 CRM 的解决方案,对于我们定义的自定义实体,我们需要创建自定义序列号。
出于各种业务原因,GUID 和顺序编号方案都行不通 - 业务坚持采用以下格式
99-9999-9999
其中每组数字基本上是一组随机数字。
在插件中创建它们很容易 - 但我如何确保唯一性?我本质上是一名 C#/SQL Server 开发人员,在 SQL Server/T-SQL 中,我只需在此列的“实体”表上创建一个唯一索引。检查是否存在新创建的号码很容易 - 只需执行
IF EXISTS (SELECT * FROM dbo.MyEntity WHERE SerialNum = @SerialNumGenerated)
检查一下,由于该单列已编入索引并且NOT NULL,因此它也会非常快。
但是如何在 Dynamics365 中做同样的事情(至少尽可能“相同”)?如果尚未使用新创建的“序列号”,我如何以编程方式检查(在我的 C# 插件中) - 并且这样做足够快,不会过多地减慢保存过程?我还能以某种方式在我的自定义实体上“索引”该属性并执行类似于IF EXISTS() 签入 T-SQL 的操作吗?
感谢任何提示或指点!
【问题讨论】:
-
嗯,它仍然可以是连续编号... 1 => 00-0000-0001, 2=>00-0000-0002 ....
-
@Selvin: no - 没有顺序编号 - 它明确要求是随机数组
-
你可能会觉得this article很有趣。
-
@Aron:谢谢-但这又只是普通的旧序列号生成-这不是我要找的
-
在相关说明中,虽然我有一段时间没有这样做,但 Microsoft 支持应该能够为您在序列号列上创建一个 custom index。您可能还想查看alternate keys 是否自动获取索引。
标签: c# plugins dynamics-crm unique-constraint dynamics-365