我已经使用插件实现了自动编号,并且它通过另一个实体类型来确保所有操作都在一个事务中。 但我有另一个问题,那就是我们可以使用进程锁(例如。互斥锁)来修复它吗?这会比以前更灵活,不是吗?
答案 0 :(得分:1)
自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应该有一个插件来管理自动编号字段(从而使其更容易),但我还没有尝试过。
答案 1 :(得分:0)
插件可以在多台机器上同时运行,具体取决于您的安装 - 这就是为什么经常使用实体(数据库)锁定。