代码之家  ›  专栏  ›  技术社区  ›  Collin Estes

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

  •  7
  • Collin Estes  · 技术社区  · 16 年前

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

    不能将null值分配给System类型的成员。Int32是一种不可为null的值类型。

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

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

    3 回复  |  直到 13 年前
        1
  •  8
  •   Micah    16 年前

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

        2
  •  2
  •   Perry Neal    16 年前

    尝试将int变量声明为可空。也就是

    int? myInt;
    

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

        3
  •  0
  •   Sami    14 年前

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

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

    谢谢。

    推荐文章