Linq to sql LINQ 2 SQL错误:无法将空值分配给类型为System.Byte(不可为空的值类型)的成员
我正试图编写一个Linq2SQL查询,但在执行时出现了以下异常 无法将空值分配给System.Byte类型为不可空值类型的成员 这里是我的LINQ2SQL查询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
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