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

时间:2013-07-23 11:21:52

标签: c# asp.net

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

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

任何人都可以告诉我如何将C#代码中的空值存储到数据库?

由于

2 个答案:

答案 0 :(得分:1)

非常确定你基本上有两种选择。

  1. 将数据库列更改为允许空值。
  2. 使用Guid.Empty并在其他表格中使用一些逻辑,以确保您在其他地方引用的列不使用空guid。
  3. 这可能是不好的形式(?)但是还要记住可能的Guids的数量,如果你担心Guid会随机发现这种情况发生的可能性,除非你处理的数量惊人的记录是不太可能。前提是你正在使用Guid.NewGuid()来生成你的Guid。

答案 1 :(得分:1)

您可能正在使用classic Guid structure。如果您的代码如下所示:

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

然后你使用经典的Guid结构。由于'Guid'是结构类型,引用'Token'将始终具有一个值,默认情况下它是全零。你想要的是什么(如果你想让Guid真正可以为空)是在Guid结构上使用可空类型修饰符。它看起来如下:

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

现在,如果你没有为'Token'赋值,它将为null。

*请注意,这可能会引入微妙的变化,并且很难跟踪NullExceptions。*