亲宝软件园·资讯

展开

为什么建议使用Guid结构体做为数据库及排序时的主键

忘临川 人气:2

在.net2.0中,Guid结构体表示一个全局唯一标识符,是一个在生成时就可以肯定为全世界唯一的16字节值。Guid在数据库中通常可以作为各种排序的主键。比如

1  public class Company
2     {
3         public Guid id { get; set; }
4         ......
5     }

其中Guid可以表示值范围总共有2128或者3.4x1018个值。

可以调用静态的Guid.newGuid方法创件一个新的唯一的Guid;

在vs code里直接dotnet new console -n test创建控制台项目,写入测试代码:

 1 using System;
 2 using static System.Guid;
 3 using static System.Console;
 4 namespace test
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Guid newGuid1 = Guid.NewGuid();
11             WriteLine(newGuid1.ToString());
12         }
13     }
14 }

然后在powershell里cd test,进行dotnet build及dotnet run;

PS C:\Users\huang\source\repos\数据结构\Guid> dotnet build
用于 .NET Core 的 Microsoft (R) 生成引擎版本 16.4.0+e901037fe
版权所有(C) Microsoft Corporation。保留所有权利。

  C:\Users\huang\source\repos\数据结构\Guid\Guid.csproj 的还原在 35.37 ms 内完成。
  Guid -> C:\Users\huang\source\repos\数据结构\Guid\bin\Debug\netcoreapp3.1\Guid.dll

已成功生成。
    0 个警告
    0 个错误

已用时间 00:00:01.10
PS C:\Users\huang\source\repos\数据结构\Guid> dotnet run
664a92a8-70cd-46ec-b8e5-f7aba10d6127
PS C:\Users\huang\source\repos\数据结构\Guid>

可看到生成了一个16字节值。

当然,也可以直接使用构造器实例化一个现有的Guid,比如

 class Guid1{
        int _x;
         public Guid(int x) { _x = x; }
        }

    }

当以字符串形式出现时,Guid是一个由32个16进制数字表示。

Guid newGuid2 = Guid.NewGuid("664a92a8-70cd-46ec-b8e5-f7aba10d6127");

Guid是一个结构体,支持值类型的语义,Guid有一个ToByteArray方法可以将其转换为一个字节数组,其中Guid.Empty静态属性可以返回一个空的Guid,通常用来表示null。

加载全部内容

相关教程
猜你喜欢
用户评论