Vb.net 指定的强制转换对于DBNULL到Double无效

Vb.net 指定的强制转换对于DBNULL到Double无效,vb.net,entity-framework,linq-to-sql,Vb.net,Entity Framework,Linq To Sql,我正在用VB.net使用实体框架。我试图将null值传递给具有double类型的参数。当我将“nothing”传递给该方法时,它将其视为默认值0,而不是null。当我传递DBNull.value时,我得到一个错误,因为强制转换无效。这是我的电话线和接电话线 Linq查询 From x In MyDbContext.uspSearch((txtFrom.Text = "", DBNull.Value, txtFrom.Text)... 实体框架中调用的方法 Public Function u

我正在用VB.net使用实体框架。我试图将null值传递给具有double类型的参数。当我将“nothing”传递给该方法时,它将其视为默认值0,而不是null。当我传递DBNull.value时,我得到一个错误,因为强制转换无效。这是我的电话线和接电话线

  • Linq查询

    From x In MyDbContext.uspSearch((txtFrom.Text = "", DBNull.Value, txtFrom.Text)...
    
  • 实体框架中调用的方法

    Public Function uspSearch(FromParm As Nullable(Of Global.System.Double)) As ObjectResult(Of uspSearch_Result)
    
试试这个:

From x In MyDbContext.uspSearch(IF(txtFrom.Text = "", CType(Nothing, Double?), txtFrom.Text))

如果您尝试隐式地将其转换为double,则默认值为0,但您可以显式地为Nullale(of double)创建一个NULL值。

我尝试的是将一个参数传递给存储过程。SP接收一个双精度值作为输入参数。我是否应该在SP端处理此问题,并在SP端将参数转换为数字?或者在应用程序端进行转换有意义吗?在SP端进行了转换,效果很好。为什么不在SP中进行管理<代码>如果参数