我正在使用Entity Framework 5.当我调用参数为null的存储过程时,我得到
"存储过程"期望参数x未提供。
即使参数为null,我也需要能够使用ExecuteSqlCommand
:
Sub SaveMANUALPosting(ByVal ExpiryDate AS DateTime)
db.Database.ExecuteSqlCommand("exec spLC_STAGEPostingLCAmendment @argExpiryDate",
New SqlParameter("argExpiryDate", If((IsNothing(ExpiryDate)), DBNull.Value, ExpiryDate)))
end Sub
上述代码当然不起作用,但说明了我要做的事情。如果传入参数为空,我如何传递DbNull
值?
答案 0 :(得分:2)
通过创建一个函数来实现它。这是代码:
Sub SaveMANUALPosting(ByVal ExpiryDate AS DateTime)
db.Database.ExecuteSqlCommand("exec spLC_STAGEPostingLCAmendment @argExpiryDate",
New SqlParameter("argExpiryDate", FormatDBValue(ExpiryDate))
end Sub
Protected Function FormatDBValue(ByVal pIn As Object) As Object
If IsNothing(pIn) Then
Return DBNull.Value
Else
Return pIn
End If
End Function
如果函数不为null,则函数将返回dbnull.value或parmeter值。 " SqlParameter"的第二个参数;期望一个对象,所以函数提供了。
感谢您的回复。让我思考......