Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql LINQ 2 SQL错误:无法将空值分配给类型为System.Byte(不可为空的值类型)的成员_Linq To Sql - Fatal编程技术网

Linq to sql LINQ 2 SQL错误:无法将空值分配给类型为System.Byte(不可为空的值类型)的成员

Linq to sql LINQ 2 SQL错误:无法将空值分配给类型为System.Byte(不可为空的值类型)的成员,linq-to-sql,Linq To Sql,我正试图编写一个Linq2SQL查询,但在执行时出现了以下异常 无法将空值分配给System.Byte类型为不可空值类型的成员 这里是我的LINQ2SQL查询 Dim items = (From i In oRecelDB.IV00200s _ Group Join c In oRecelDB.MDS_CONTAINERs _ On c.CONTAINERBIN Equals i.BIN Into ic = Group F

我正试图编写一个Linq2SQL查询,但在执行时出现了以下异常

无法将空值分配给System.Byte类型为不可空值类型的成员

这里是我的LINQ2SQL查询

 Dim items = (From i In oRecelDB.IV00200s _
                Group Join c In oRecelDB.MDS_CONTAINERs _
                    On c.CONTAINERBIN Equals i.BIN Into ic = Group From x In ic.DefaultIfEmpty() _
                Group Join sop In oRecelDB.SOP10201s _
                     On i.SERLNMBR Equals sop.SERLTNUM And i.ITEMNMBR Equals sop.ITEMNMBR _
                     Into os = Group From y In os.DefaultIfEmpty() _
                Group Join iv1 In oRecelDB.IV10002s _
                     On iv1.SERLTNUM Equals i.SERLNMBR And iv1.ITEMNMBR Equals i.ITEMNMBR _
                     Into iv2s = Group From z In iv2s.DefaultIfEmpty() _
                 Where i.SERLNMBR = "2323"  _
                 Select Bin = i.BIN, i.ITEMNMBR, i.LOCNCODE, i.DATERECD, i.SERLNMBR, i.SERLNSLD _
                , YPosted = y.POSTED).ToList()

我知道y.POSTED中的值为null可能是原因。我如何处理?有什么想法吗?感谢advace

我能想到的一种可能性是,当您生成LINQ上下文类和对象类时,您有一个设置为非空的数据库字段。后来您将数据库字段更改为空,并且一些记录包含空值。您可能需要查看dbml(LINQ)文件的代码隐藏文件

private System.Nullable<Byte> Posted.
专用系统。可为空的已发布。

如果该字段未定义为可空,则可以将其更改为可空或重新生成dbml文件,问题已得到解决。

问题在于,为该查询生成的SQL为该列返回空值,这是由于左联接或返回空值的子查询造成的。C#正在推断字节类型,因为表的列不可为null,但结果的列可为null

通过执行以下操作来解决此问题

   YPosted = (byte?)y.POSTED