下午好,
我在延迟加载null子对象时遇到问题。请考虑以下代码:
// Retrieve all repairs
var repairs = this.db.Repairs.Include("Brand").Include("Model");
// JUST FOR TESTING PURPOSES
// Some repairs do not have a brand or model. This query returns about 14 results
var reps = this.db.Repairs.Where(r => r.ModelId == 0 || r.BrandId == 0);
// Map the repairs to the viewmodel
var ret = repairs.Select(qRepair => new RepairListViewModel
{
Brand = qRepair.Brand == null ? "Unkown" : qRepair.Brand.Name,
CompanyName = qRepair.User.CompanyName,
CustomerName = qRepair.CustomerName,
Created = qRepair.Created,
DamageNumber = qRepair.DamageNumber,
Id = qRepair.Id,
Model = qRepair.Model == null ? "Unkown" : qRepair.Model.Name,
OrderNumber = qRepair.Order.OrderNumber,
Printed = qRepair.Printed,
Status = qRepair.Status
});
此后返回列表以在Kendo UI Grid中使用。
但是,品牌或型号名称“Unkown”没有维修。它似乎跳过了Brand或Model为null的修复。我在这里想念的是什么?!
提前致谢!
答案 0 :(得分:0)
我会使用这种语法来解决问题:
var query = from pro in db.Repais
select new {
Brand = qRepair.Brand == null ? "Unkown" : qRepair.Brand.Name,
CompanyName = qRepair.User.CompanyName,
CustomerName = qRepair.CustomerName,
Created = qRepair.Created,
DamageNumber = qRepair.DamageNumber,
Id = qRepair.Id,
Model = qRepair.Model == null ? "Unkown" : qRepair.Model.Name,
OrderNumber = qRepair.Order.OrderNumber,
Printed = qRepair.Printed,
Status = qRepair.Status
};
return query.ToList<Object>();
我不能确切地说你的代码中存在什么问题。您可以尝试在VS中加载Linq dll并尝试调试以查找一些错误信息。不要忘记包括。但我认为这个问题是因为datacontext中的reutrn类型。
我希望这会对你有所帮助。