Esempio n. 1
0
        ///<summary>Generates a random primary key without using the cache.</summary>
        public static long GetKeyNoCache(string tablename, string field)
        {
            long rangeStart = 10000;
            long rangeEnd   = long.MaxValue;
            long server_id  = GetServer_id();

            if (server_id != 0)
            {
                ReplicationServer thisServer = ReplicationServers.GetServer(server_id);
                if (thisServer != null && thisServer.RangeEnd - thisServer.RangeStart >= 999999)
                {
                    rangeStart = thisServer.RangeStart;
                    rangeEnd   = thisServer.RangeEnd;
                }
            }
            long span    = rangeEnd - rangeStart;
            long rndLong = (long)(ODRandom.NextDouble() * span) + rangeStart;

            while (rndLong == 0 ||
                   rndLong < rangeStart ||
                   rndLong > rangeEnd ||
                   KeyInUse(tablename, field, rndLong))
            {
                rndLong = (long)(ODRandom.NextDouble() * span) + rangeStart;
            }
            return(rndLong);
        }