当前位置:Gxlcms > 数据库问题 > 数据库主键生成策略

数据库主键生成策略

时间:2021-07-01 10:21:17 帮助过:2人阅读

NHibernate中,COMB型主键的生成代码如下所示:

public Guid GenerateComb()
{
    byte[] guidArray = Guid.NewGuid().ToByteArray();

    DateTime baseDate = new DateTime(1900, 1, 1);
    DateTime now = DateTime.Now;

    // Get the days and milliseconds which will be used to build 
    //the byte string 
    TimeSpan days = new TimeSpan(now.Ticks - baseDate.Ticks);
    TimeSpan msecs = now.TimeOfDay;

    // Convert to a byte array   
    // Note that SQL Server is accurate to 1/300th of a 
    // millisecond so we divide by 3.333333 
    byte[] daysArray = BitConverter.GetBytes(days.Days);
    byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds / 3.333333));

    // Reverse the bytes to match SQL Servers ordering 
    Array.Reverse(daysArray);
    Array.Reverse(msecsArray);

    // Copy the bytes into the guid 
    Array.Copy(daysArray, daysArray.Length - 2, guidArray,guidArray.Length - 6, 2);
    Array.Copy(msecsArray, msecsArray.Length - 4, guidArray,guidArray.Length - 4, 4);

    return new Guid(guidArray);
}

  

数据库主键生成策略

标签:

人气教程排行