コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }