什么会导致linq sql认为参数可以为空?

时间:2010-05-27 21:03:39

标签: sql-server linq-to-sql stored-procedures

我有一个声明输入参数

的存储过程
@BatchNumber uniqueidentifier 

表中的此字段设置为不允许为空。

当我拖入存储过程并挂起所有内容时,它表示参数可以为空。

我不明白为什么。认为参数可以为空是否正常?

1 个答案:

答案 0 :(得分:1)

Sql中的所有变量都是可空的。没有办法在sql中创建一个不可为空的变量。

 --yup, it's nullable.  even starts initialized to null.
DECLARE @MyVar int

如果在设计器中更改参数类型,那应该没问题。

映射代码可以具有不可为空的权限并将其传递给数据库,数据库将其称为可空,并且没有问题。这种情况发生在您的查询中已经存在的每个非可空...例如Where子句中的非可空整数ID。

如果你不能在设计师中设置所需的类型..这里是做什么的。获取方法的生成代码,并将其从designer.cs文件中复制到新的分部类定义中。手动在方法的属性中设置类型。从设计器中删除存储的proc(此时,存储过程是手动添加)。我们必须使用这种修复方式来允许OUTPUT参数工作。