0

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

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

谁能告诉我如何将空值从 C# 代码存储到数据库?

谢谢

4

2 回答 2

1

您很可能正在使用经典的 Guid 结构。如果您的代码如下所示:

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

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

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

现在,如果您不为“令牌”分配值,它将为空。

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

于 2013-07-23T15:32:08.447 回答
1

很确定你基本上有两个选择。

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

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

于 2013-07-23T15:22:09.073 回答