我在SQL中有一个可以具有空值的smalldatetime列,但是当我尝试使用SqlTypes.SqlDateTime.Null和LINQtoSQL插入空值时,它会放入1/1/1900而不是NULL。
插入null的最佳方法是什么,或者我现在正在执行此操作。如果我现在正在使用正确的方法,应该采取什么措施来防止在WPF应用程序中的字段上显示1/1/1900。
数据库是SQL 2008。
由于
(编辑)代码
Public Shared Function saveNewClient(ByVal clientName As String, ByVal active As Boolean, ByVal maintRenew As SqlTypes.SqlDateTime, ByVal currOp As Int32) As Int32
Try
Dim c As New client()
c.crGUID = Guid.NewGuid
c.crClientName = clientName
c.crMaintenanceRenewal = maintRenew
c.crActive = active
c.crAddOp = currOp
c.crAddDate = DateTime.Now
c.crEditOp = currOp
c.crEditDate = DateTime.Now
db.clients.InsertOnSubmit(c)
db.SubmitChanges()
Return c.crID
Catch ex As Exception
Return Nothing
End Try
结束功能
答案 0 :(得分:2)
您需要做的就是使用可以为空的数据类型。查看函数的签名,看起来你正在为maintRenew传入一个SqlDateTime。
ByVal maintRenew As SqlTypes.SqlDateTime
相反,尝试传递可以为空的DateTime,例如:
ByVal maintRenew As DateTime?
在调用函数中,您可以传入标准的“Nothing”,(在(C#)中为null,或者根据需要传递DateTime),而不是传入DBNull。
答案 1 :(得分:0)
您是否尝试过null而不是SqlTypes.SqlDateTime.Null? 数据库表行是否显示为空?