我想在使用LINQ(特别是LINQ到实体)时实现MVC.我这样做的方法是让Controller使用LINQ生成(或调用生成的)结果集,然后将其返回到View以显示数据.问题是,如果我这样做:
return (from o in myTable select o);
Run Code Online (Sandbox Code Playgroud)
所有列都从数据库中读取,即使是我不想要的列(可能是几十列).而且 - 更重要的是 - 我做不到这样的事情:
return (from o in myTable select new { o.column });
Run Code Online (Sandbox Code Playgroud)
因为没有办法让匿名类型安全!我知道确实没有好的,干净的方式在3.5中这样做(这不干净......),但4.0怎么样?有什么计划,甚至提议? 如果没有像duck-typing-for-LINQ那样的东西,或类型安全的匿名返回值(在我看来,编译器当然应该能够做到这一点),似乎几乎不可能将Controller与View完全分开.
如何从DbSet中对查询进行排序,并包括应该排序的子项.
例:
我有一个调度订单的模型.
public class Order
{
public virtual int Id { get; set; }
public virtual int? SchedulingOrder { get; set; }
public virtual int? WeekId { get; set; }
public virtual Week Week { get; set; }
}
public class Week
{
public virtual int Id { get; set; }
public virtual DateTime StartDate { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
...
public DbSet<Week> Weeks { get; set; }
public DbSet<Order> Orders …Run Code Online (Sandbox Code Playgroud)