使用LINQ防止存储过程中的可为空参数

时间:2009-07-26 00:54:06

标签: asp.net linq stored-procedures

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

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

感谢。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:-2)

您可以改为指定默认值:

@MailItemId int OUTPUT = 0

或类似的东西