我有一个LINQ查询,在我的DAL与EF正常工作:如何在LINQ结果检查的NullReferenceException
using (var mLEntities = new myLab02Entities1())
{
var test = from c in mLEntities.Chemicals
from u in c.Usages
select new
{
cChemID = c.Chem_ID,
c.Name,
c.Supplier,
c.Grade,
c.OrderNo,
c.BatchNo,
c.EntryDate,
c.CreatedBy,
cUser = u.Person.PersName,
uChemID = u.Chem_ID,
u.Study_ID,
u.UsedBy,
uUser = u.Person.PersName,
u.UseDate,
u.Project.StudyNo,
u.Project.ProjectName,
};
用法是化学品的导航性能(1种化学:N USA),和人与项目都是用法的导航属性(均为1:1)。 后来我想把这个查询我的业务逻辑和写道:
IList<ChemicalBDO> chemicalListBDO = chemListDAO.GetChemicalsListFromDB();
var test = from c in chemicalListBDO
from u in c.Usages
select new
{
cChemID = c.Chem_ID,
c.Name,
c.Supplier,
c.Grade,
c.OrderNo,
c.BatchNo,
c.EntryDate,
c.CreatedBy,
cUser = u.Person.PersName,
uChemID = u.Chem_ID,
u.Study_ID,
u.UsedBy,
uUser = u.Person.PersName,
u.UseDate,
u.Project.StudyNo,
u.Project.ProjectName
};
也就是说,我首先查询我的EF的DbContext拿到我的化学实体,而且比我写的对这种化学实体的查询。 对我来说,奇怪的是,最后的代码抛出一个System.NullReferenceExeption,因为u.Person和u.Project可以为NULL。但是第一个查询不会抛出异常,这是什么原因? 我如何处理在选择查询的空引用,我可以检查NULL用“如果”,“?”要么 ”??” ?
顺便说一句:我想有在DAL复杂的查询是没有良好的编程习惯,这是真的还是我可以让代码呢? 任何帮助表示赞赏。
你见过这样的职位? http://stackoverflow.com/a/14260113/821681 –
约翰尼:我没有看到过那个帖子,我会看看吧,谢谢。 Hucky – Hucky
随时。我不确定它是否能完全解决您的问题,但看起来它有潜力,因此我决定分享它。祝你好运! –