【问题标题】:Prevent nullable parameter in stored procedure with LINQ使用 LINQ 防止存储过程中的可为空参数
【发布时间】:2009-07-26 00:54:05
【问题描述】:

我想定义不允许空参数的存储过程参数。

alt text http://www.pixelshack.us/images/xg3mr2xw0q13z22nal.jpg

@MailItemId int OUTPUT 不能为空,因为当我将存储过程导入 LINQ to SQL 设计器时,它显示 @MailIetmid 是 ref int? mailItemId

alt text http://www.pixelshack.us/images/er80hukg27lreiy9b83y.jpg

谢谢。

【问题讨论】:

  • 指定默认值有帮助吗? (@MailItemID int = 0 输出)

标签: asp.net linq stored-procedures


【解决方案1】:

如果没有别的,您可以修改自动生成的代码(在 Designer.cs 中)以不接受可为空的整数。如果该参数最终为 null,则可能会在 LINQ to SQL 代码中导致奇怪的异常,但这并不是什么大问题。

【讨论】:

  • 这对我来说似乎很有用。所以我马上试试。我会告诉你它是否会起作用:)但是谢谢你的回答。
【解决方案2】:

不,你不能这样做。 SQL Server 中的类型始终可以为 NULL。

【讨论】:

    【解决方案3】:

    您可以创建一个返回 INT 的函数。

    另一方面,从 SQL 的角度来看,函数可以返回 NULL。我不知道代码生成器将如何为此生成函数。如果它仍然返回一个可为空的 int,我认为这是不可能的。

    【讨论】:

      【解决方案4】:

      您可以指定一个默认值:

      @MailItemId int OUTPUT = 0
      

      或者类似的东西

      【讨论】:

      • 这不会阻止类型可以为空,它只是定义了一个不为空的默认值。这两件事是正交的。
      猜你喜欢
      • 1970-01-01
      • 2013-10-03
      • 2019-01-18
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2015-08-07
      • 2019-07-31
      • 2020-05-28
      相关资源
      最近更新 更多