Dynamics crm Dynamics 365使用插件实现自动编号

Dynamics crm Dynamics 365使用插件实现自动编号,dynamics-crm,mutex,autonumber,Dynamics Crm,Mutex,Autonumber,我已经用插件实现了自动编号,它是通过另一个实体类型来确保所有操作都在一个事务中。 但我还有一个问题,那就是我们可以使用进程锁吗。用互斥来修复它?这将比以前更加灵活,不是吗?插件可以在多台计算机上同时运行,具体取决于您的安装情况-这就是为什么经常使用实体数据库锁的原因。自v9.0以来,Dynamics 365本机支持自动编号字段,只需通过代码操作这些字段,这带来了一些小不便。 除非它是一个坏的功能,它发生了,没有必要自定义自动编号了 例如: CreateAttributeRequest widge

我已经用插件实现了自动编号,它是通过另一个实体类型来确保所有操作都在一个事务中。
但我还有一个问题,那就是我们可以使用进程锁吗。用互斥来修复它?这将比以前更加灵活,不是吗?

插件可以在多台计算机上同时运行,具体取决于您的安装情况-这就是为什么经常使用实体数据库锁的原因。

自v9.0以来,Dynamics 365本机支持自动编号字段,只需通过代码操作这些字段,这带来了一些小不便。 除非它是一个坏的功能,它发生了,没有必要自定义自动编号了

例如:

CreateAttributeRequest widgetSerialNumberAttributeRequest = new CreateAttributeRequest
{
    EntityName = "newWidget",
    Attribute = new StringAttributeMetadata
    {
        //Define the format of the attribute
        AutoNumberFormat = "WID-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}",
        LogicalName = "new_serialnumber",
        SchemaName = "new_SerialNumber",
        RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
        MaxLength = 100, // The MaxLength defined for the string attribute must be greater than the length of the AutoNumberFormat value, that is, it should be able to fit in the generated value.
        DisplayName = new Label("Serial Number", 1033),
        Description = new Label("Serial Number of the widget.", 1033)
    }
};
_serviceProxy.Execute(widgetSerialNumberAttributeRequest);
文件指出,

序列段由SQL生成,因此SQL保证唯一性


XrmToolbox应该有一个插件来管理自动编号字段,这样会更简单,但我还没有尝试过。

这是我以前的解决方案是的,谢谢Alex,我知道它,但对于我的项目,我有一个更常见的函数来包装它,所以我只需要做一些配置就可以了。另外,我只想知道一种解决此类问题的方法,自动编号只是并发动力学中的一个经典问题。啊,非常感谢James。互斥仅在一台机器上工作以控制多个进程,我忘记了NLB环境。。谢谢