c# - 可为空的 GUID

标签 c# .net sql-server guid nullable

在我的数据库中,在其中一个表中有一个允许空值的 GUID 列。我有一个带有 Guid 的方法?在表中插入新数据行的参数。但是,当我说 myNewRow.myGuidColumn = myGuid 时,出现以下错误:“无法隐式转换类型‘System.Guid?’到 'System.Guid'。”

最佳答案

ADO.NET API 在处理可空值类型时存在一些问题(即它无法正常工作)。我们遇到了无穷无尽的问题,因此得出的结论是最好手动将值设置为 null,例如

myNewRow.myGuidColumn = myGuid == null ? (object)DBNull.Value : myGuid.Value

这是 ADO.NET 应该处理的痛苦的额外工作,但它似乎并不可靠(即使在 3.5 SP1 中)。这至少可以正常工作。

我们还看到了将可空值类型传递给 SqlParameters 的问题,其中生成的 SQL 包含关键字 DEFAULT 而不是 NULL 作为值,因此我建议构建参数时采用相同的方法。

关于c# - 可为空的 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211436/

相关文章:

c# - CaSTLe 未解析所有已注册的组件

C# .NET 应用程序设置和升级

sql-server - 从 SQL Server 中的多表连接生成 XML

sql-server - 使用 SSIS 将多个连接表从一个数据库传输到另一个数据库?

SQL Server按不同字段的顺序选择组

c# - 从一个实现 INotifyPropertyChanged 的​​基类继承?

c# - 临时更改 Sitecore 项目的布局

c# - 如何干净地暂停一个线程,直到另一个线程完成或更改一个值

C# - 移动文件 - 队列或多线程

c# - WPF FrameworkElement 父级和移动 UIElement