2013-12-10 86 views
0

我正在使用实体框架与VB.net。我试图将一个null值传递给具有double类型的参数。当我将“无”传递给该方法时,它将其视为默认值0而不是null。当我传递DBNull.value时,我得到Cast的错误无效。这是我的呼叫线路和接收线路。指定的演员表对DBNULL无效

  • 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) 
    
+0

我想要做的是将参数传递给存储过程。 SP接收到一个double作为输入参数。我是否应该在SP端处理这个问题并将该参数转换为SP端的编号?或者在应用程序端进行转换有意义吗? – user2011126

+0

它在SP端,它工作正常。 – user2011126

+0

为什么你不管理它? '如果param <= 0,那么param = NULL' –

回答

0

试试这个:

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

它默认为0如果你试图隐式地将它转换为double,但是你可以明确地为Nullale(双精度型)创建一个NULL值