Gre*_*ech 29
在处理可空值类型时,ADO.NET API存在一些问题(即它无法正常工作).我们已经完成了它的问题,因此得出的结论是,最好手动将值设置为null,例如
myNewRow.myGuidColumn = myGuid == null ? (object)DBNull.Value : myGuid.Value
Run Code Online (Sandbox Code Playgroud)
这是ADO.NET应该处理的痛苦的额外工作,但它似乎并不可靠(即使在3.5 SP1中).这至少可以正常工作.
我们还看到了将可空值类型传递给SqlParameters的问题,其中生成的SQL包含关键字DEFAULT
而不是NULL
值,因此我建议在构建参数时采用相同的方法.
Mar*_*ell 10
好; 如何定义myGuidColumn,myGuid是如何定义的?
如果myGuid是Guid?
和myGuidColumn Guid
,那么错误是正确的:你将需要使用myGuid.Value
,或者(Guid)myGuid
获取值(如果它为null将抛出),或者如果为null则myGuid.GetValueOrDefault()
返回零guid.
如果myGuid是Guid
和myGuidColumn Guid?
,那么它应该工作.
如果是myGuidColumn object
,则可能需要DBNull.Value
代替常规null.
当然,如果列真的可以为空,那么您可能只想确保它Guid?
在C#代码中;-p
小智 6
与Greg Beech的答案相同
myNewRow.myGuidColumn = (object)myGuid ?? DBNull.Value
Run Code Online (Sandbox Code Playgroud)
你必须转向null
一个nullable Guid
,这对我有用:
myRecord.myGuidCol = (myGuid == null) ? (Guid?)null : myGuid.Value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50681 次 |
最近记录: |