我有一个返回两个int值的存储过程。第一个不能为null,但第二个实际上可以返回null值。当我尝试使用LINQ to SQL执行我的存储过程时,它失败并带有语句:
无法将null值分配给System.Int32类型的成员,该类型是不可为空的值类型。
我尝试在我的DBML中更改我的设计器文件,并将:CanBeNull= true
添加到存储过程结果的列映射中。
我似乎可以找出处理这个问题的正确方法,不确定我是否可以更改我的LINQ / C#代码来解释null(这可能更好)或者我是否必须更新我的存储过程以某种方式。
答案 0 :(得分:8)
您需要将变量声明为可为空。在设计器中,单击模型中需要可为空的属性,然后在属性窗口中,将“Nullable”属性设置为 True 。这将告诉生成器将您的属性创建为Nullable<int> or int?
答案 1 :(得分:2)
尝试将int变量声明为可空。即
int? myInt;
这样你可以检查它们是否为null。
答案 2 :(得分:0)
我也遇到了这个错误,原因是我已经更改了一个字段以允许在表中使用null但是我没有在.dbml文件中删除该表。通过删除并再次删除.dbml文件中的表来解决此问题。
希望这对其他一些用户有所帮助。
感谢。