C# LINQ中出现不一致错误无法将空值分配给类型为System.Int32的成员,该类型是不可为空的值类型
我知道有很多与这个问题相关的链接,但我的场景有点奇怪。 tbEHDepartments和TBEHAccesss表是新添加的,因此它们在tbEHUsers表中的引用为空。据我所知,在列中搜索NULL值是错误的原因,但在ManagerID为NULL的情况下有效。我的意思是,如果我从select查询中删除grp1.DeptID,那么即使ManagerId为null,一切都会正常工作C# LINQ中出现不一致错误无法将空值分配给类型为System.Int32的成员,该类型是不可为空的值类型,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我知道有很多与这个问题相关的链接,但我的场景有点奇怪。 tbEHDepartments和TBEHAccesss表是新添加的,因此它们在tbEHUsers表中的引用为空。据我所知,在列中搜索NULL值是错误的原因,但在ManagerID为NULL的情况下有效。我的意思是,如果我从select查询中删除grp1.DeptID,那么即使ManagerId为null,一切都会正常工作 var data = from t in db.tbEHUsers.DefaultIfEmpty()
var data = from t in db.tbEHUsers.DefaultIfEmpty()
join t3 in db.tbEHUsers.DefaultIfEmpty() on t.ManagerID equals t3.UserID into t2
from grp in t2.DefaultIfEmpty()
join d in db.tbEHDepartments.DefaultIfEmpty() on t.DeptID equals d.DeptID into t4
from grp1 in t4.DefaultIfEmpty()
join a in db.tbEHAccesses.DefaultIfEmpty() on t.AccessID equals a.AccessID into t5
from grp2 in t5.DefaultIfEmpty()
orderby t.FirstName
select new { t.UserID, t.UserName, t.FirstName, t.LastName, t.Email, t.ManagerID, TeamLead = grp.FirstName + " " + grp.LastName, grp1.DeptID };//, grp1.DeptName, grp2.AccessID, AccessName=grp2.Name };
var dt = Utility.ToDataTable(data);
ManagerID和USerID是相同的数据类型吗?其中一个是否可以为空,因此为“Int32”
有时,直到数据库中遇到数据时才会抛出这样的错误。这正是LINQ到SQL还是实体框架?可能是@Gert的重复,谢谢,DeptId=(int?)grp1.DeptId解决了我的问题。嗯,为什么在2014年底使用死伪ORM?EF6.1现在已经相当不错了。