带有插件的Dynamics 365实现自动编号

时间:2018-04-23 07:57:37

标签: dynamics-crm mutex autonumber

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

2 个答案:

答案 0 :(得分:1)

自v9.0起,Dynamics 365对自动编号字段具有本机支持,但由于不必仅通过代码操作它们而带来轻微的不便。 除非它是一个破损的功能(它发生),否则不再需要自定义自动编号。

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/create-auto-number-attributes

示例:

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应该有一个插件来管理自动编号字段(从而使其更容易),但我还没有尝试过。

答案 1 :(得分:0)

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