private void SetAutoNumber(LocalPluginContext context, Entity target, AutoNumberManager manager) { var setting = manager.Setting; if (setting.UseInitializedValue(target)) { context.TraceFormat( "The Attribute {0} in the Entity {1} already contains a value, and will not be overriden", setting.AttributeName, setting.EntityName); return; } // Attempt to use Batched Auto Number if (manager.AutoNumberBatch.Count == 0) { context.TraceFormat("No batched value found. Repopulating batch for {0}.{1}", setting.EntityName, setting.AttributeName); manager.EnqueueBatch(context); if (manager.AutoNumberBatch.Count == 0) { throw new InvalidPluginExecutionException("EnqueueBatch never enqueued a new value!"); } } target[setting.AttributeName] = manager.AutoNumberBatch.Dequeue(); }
public void TestAutoNumber() { CrmConnection c = new CrmConnection("CRM"); var service = new OrganizationService(c); Entity seq = new Entity("ctccrm_autonumbersequence"); var seqName = Guid.NewGuid().ToString(); seq["ctccrm_name"] = seqName; seq["ctccrm_currentvalue"] = 0; var seqID = service.Create(seq); int nextValue = 0; while (nextValue < 10) { AutoNumberManager anm = new AutoNumberManager(); nextValue = anm.GetNextSequence(service, seqName); } service.Delete("ctccrm_autonumbersequence", seqID); }