如何处理从LINQ to SQL中的存储过程返回的NULLable Int列

时间:2009-01-05 19:53:02

标签: c# asp.net linq-to-sql stored-procedures

我有一个返回两个int值的存储过程。第一个不能为null,但第二个实际上可以返回null值。当我尝试使用LINQ to SQL执行我的存储过程时,它失败并带有语句:

  

无法将null值分配给System.Int32类型的成员,该类型是不可为空的值类型。

我尝试在我的DBML中更改我的设计器文件,并将:CanBeNull= true添加到存储过程结果的列映射中。

我似乎可以找出处理这个问题的正确方法,不确定我是否可以更改我的LINQ / C#代码来解释null(这可能更好)或者我是否必须更新我的存储过程以某种方式。

3 个答案:

答案 0 :(得分:8)

您需要将变量声明为可为空。在设计器中,单击模型中需要可为空的属性,然后在属性窗口中,将“Nullable”属性设置为 True 。这将告诉生成器将您的属性创建为Nullable<int> or int?

答案 1 :(得分:2)

尝试将int变量声明为可空。即

int? myInt;

这样你可以检查它们是否为null。

答案 2 :(得分:0)

我也遇到了这个错误,原因是我已经更改了一个字段以允许在表中使用null但是我没有在.dbml文件中删除该表。通过删除并再次删除.dbml文件中的表来解决此问题。

希望这对其他一些用户有所帮助。

感谢。