1

我的viewmodel中的大部分值都成功返回,但在更新我的模型类后,其中两个值(与数据库中的其他表绑定)返回空值,即使我没有改变我的分配方式。我已经意识到这个问题是:ViewModel问题返回空值到视图

Vehicles = utc.Vehicles.OrderByDescending(v => v.DateCreated).Take(10).ToList() 

它不包括车型和制造商。我正在寻找一种方法来更改此声明为:

Vehicles = utc.Vehicles.Include(v => v.Model).Include(v => v.Model.Manufacturer).OrderByDescending(v => v.DateCreated).Take(10).ToList() 

但它会引发错误并且不会编译。

任何人都可以协助吗?

编辑 这是我的代码。对于控制器:

public ActionResult Index() 
    { 
         var home = new HomeViewModel 
     { 
      latestVehiclesViewModel = new LatestVehiclesViewModel 
      { 
       Vehicles = utc.Vehicles.Include("Model").Include("Manufacturer") 
     .OrderByDescending(v => v.DateCreated) 
     .Take(10) 
     .ToList() 
      }, 

      searchViewModel = new SearchViewModel 
      { 
       Manufacturers = utc.Manufacturers.ToList(), 
       //Models = utc.Models.ToList(), 
      } 
     }; 
     return View(home); 
    } 

对于模型型号:

public class Model 
{ 
    public int ModelId { get; set; } 
    public int ManufacturerId { get; set; } 
    public string Name { get; set; } 
    public List<Vehicle> Vehicles { get; set; } 
    public Manufacturer Manufacturer { get; set; } 
} 
+0

'return View(home);'什么是'home'? – haim770

+0

对不起,修好了。 –

回答

2

我EF5不允许我传递一个表达式作为参数传递给DbSet()包含。

试试这个比较:

Vehicles = utc.Vehicles.Include("Model").Include("Manufacturer") 
      .OrderByDescending(v => v.DateCreated) 
      .Take(10) 
      .ToList() 
+0

这个编译,但是我得到一个新的错误:指定的包含路径无效。 EntityType'UnderTrader.Models.Vehicle'没有声明名称为'Manufacturer'的导航属性。 –

+0

然后......也许它没有一个名为'Manufacturer'的导航属性......但是我怎么才能真正看到,因为你是唯一一个注意到.edmx,模型类,dbcontext类的人.. ....发布您的代码;) –

+0

现在添加我的代码... –

0

我固定它自己......新的错误是我的错,它应该是包括(“Model.Manufacturer”)......我已经接受了昆顿·伯恩哈特的答案因为这正是帮助我将这个目标放在第一位的原因......谢谢。