如何将null存储到数据库中的guid列

本文关键字:guid 数据库 null 存储 | 更新日期: 2023-09-27 18:24:32

我是ASP.NET和C#的新手,使用mysql和postgresql。

我正试图将Null值存储到数据库中的GUId列中。但在保存数据时出错,因为它默认将GUId.empty值存储到该数据库中。

有人能告诉我如何将C#代码中的null值存储到数据库中吗?

感谢

如何将null存储到数据库中的guid列

非常确定您基本上有两个选项。

  1. 更改"数据库"列以允许Null
  2. 请使用Guid.Empty,并在其他表填充中使用一些逻辑,以确保您在其他地方引用的列不使用空Guid

这可能是一种糟糕的形式(?),但也要记住可能的Guid的数量,如果你担心Guid随机为空,除非你要处理数量惊人的记录,否则这种情况发生的可能性是极不可能的。当然,前提是您正在使用Guid.NewGuid()生成您的Guid。

很可能您使用的是经典的Guid结构。如果你的代码看起来像这样:

public class Dog
{
    public Guid Token { get; set;}
}

那么您使用的是经典的Guid结构。由于"Guid"是一个结构类型,引用"Token"将始终具有一个值,默认情况下该值全部为零。您想要的(如果您希望使Guid真正可以为null)是在Guid结构上使用可以为null的类型修饰符。它看起来如下:

public class Dog
{
     public Guid? Token { get; set;}
}

现在,如果不为"Token"赋值,它将为null。

*请注意,这可能会带来细微的变化和难以跟踪的NullExceptions。*