我试图理解所有这些ViewModel的东西,并且以正确的方式处理事情。我有几个模型通过Entity Framework链接到SQL表,就像这个:
[Table("HardwareOptions", Schema = "dbo")]
public class HardwareOption {
[Key]
public int RecordID {get; set;}
[ForeignKey("Configuration")]
public string Configuration {get; set;}
public string ComputerManufacturer {get; set;}
public string ComputerModel {get; set;}
public string ComputerDescription {get; set;}
public int MonitorCount {get; set;}
public string MonitorManufacturer {get; set;}
public string MonitorModel {get; set;}
public string MonitorDescription {get; set;}
}
我有一个像这样的视图模型:
public class OrderIndexViewModel {
public Customer Customer {get; set;}
public MetaUser MetaUser {get; set;}
public DbSet<HardwareOption> HardwareOptions {get; set;}
public DbSet<Machine> Machines {get; set;}
public DbSet<PendingOrder> PendingOrders {get; set;}
}
我的控制器代码如下:
private MyDbContext db = new MyDbContext();
OrderIndexViewModel viewmodel = new OrderIndexViewModel();
viewmodel.Customer = db.Customers.Find("myselffortesting");
viewmodel.MetaUser = db.MetaUsers.Find("myselffortesting");
viewmodel.HardwareOptions = db.HardwareOptions;
viewmodel.Machines = db.Machines;
viewmodel.PendingOrders = db.PendingOrders;
return View(viewmodel);
因此,从我的角度来看,我只需要有关一个客户/用户的信息,但我需要能够查询整个HardwareOptions、Machines和PendingOrders表。如果我的架构完全错误,请告诉我,因为这更多是关于这个问题的。但是对于某些特定的事情,比如我想从HardwareOptions中制作一个下拉列表。从技术上讲,我希望每个都说几列值的字符串组合,但现在我只想要一个,比如Configuration。正确的做法是什么?我不知道如何操作。当我试图从制作时,我得到了一个具有正确数量项目的列表,但它们都说“mynamespace.Models.HardwareOption。”这是有道理的,我只是无法弄清楚如何做到这一点。