MongoDB.Bson.Serialization.IdGenerators.CombGuidGenerator.GenerateId C# (CSharp) Метод

GenerateId() публичный Метод

Generates an Id for a document.
public GenerateId ( object container, object document ) : object
container object The container of the document (will be a MongoCollection when called from the C# driver).
document object The document.
Результат object
        public object GenerateId(object container, object document)
        {
            var baseDate = new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            var now = DateTime.UtcNow;
            var days = (ushort)(now - baseDate).TotalDays;
            var milliseconds = (int)now.TimeOfDay.TotalMilliseconds;

            // replace last 6 bytes of a new Guid with 2 bytes from days and 4 bytes from milliseconds
            // see: The Cost of GUIDs as Primary Keys by Jimmy Nilson
            // at: http://www.informit.com/articles/article.aspx?p=25862&seqNum=7

            var bytes = Guid.NewGuid().ToByteArray();
            Array.Copy(BitConverter.GetBytes(days), 0, bytes, 10, 2);
            Array.Copy(BitConverter.GetBytes(milliseconds), 0, bytes, 12, 4);
            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(bytes, 10, 2);
                Array.Reverse(bytes, 12, 4);
            }
            return new Guid(bytes);
        }