EF Code First Lazy加载null子对象

时间:2013-08-30 14:47:37

标签: null ef-code-first lazy-loading

下午好,

我在延迟加载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的修复。我在这里想念的是什么?!

提前致谢!

1 个答案:

答案 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类型。

我希望这会对你有所帮助。

相关问题