2009-07-26 91 views
2

我想定义不允许使用空参数的存储过程参数。使用LINQ防止存储过程中的可为空参数

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

这是因为当我导入存储过程到LINQ to SQL设计它说@MailIetmid是ref int? mailItemId@MailItemId int OUTPUT将不能为空。

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

谢谢。

+0

是否指定默认值帮助? (@MailItemID int = 0 OUTPUT) – shahkalpesh 2009-07-26 01:01:21

回答

2

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

+0

这对我来说似乎很有用。所以我会马上尝试。我会告诉你它会不会起作用:)但谢谢你的答案。 – Tarik 2009-07-26 08:56:39

-2

您也可以指定一个默认值:

@MailItemId int OUTPUT = 0 

或类似的东西

+2

这并不妨碍该类型为空,它只是定义了一个不为空的默认值。这两件事是正交的。 – 2009-07-26 01:19:57

1

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

0

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

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

相关问题