2013-12-10 3 views
0

Я использую инфраструктуру Entity с VB.net. Я пытаюсь передать значение null параметру, который имеет тип double. Когда я передаю «ничего», методу, он рассматривает его как значение по умолчанию 0, а не null. Когда я передаю DBNull.value, я получаю сообщение об ошибке для Cast. Вот моя линия вызова и линия приема.Указанный листинг недействителен для DBNULL для Double

  • Linq запрос

    From x In MyDbContext.uspSearch((txtFrom.Text = "", DBNull.Value, txtFrom.Text)... 
    
  • Метод Вызывается в Entity Framework

    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

Почему вы не управляете им в sp? 'Если param <= 0, то param = NULL' –

ответ

0

попробовать это:

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

По умолчанию Ничего, как 0, если вы попытаетесь неявно преобразовать его в double, но вы можете явно указать значение NULL для Nullale (of Double)

Смежные вопросы