C# 实体框架关系Foreach
我有这些类,我正在使用一个存储库模式,并试图得到一个IEnumerable来包含workordeail。我是MVC和实体框架的新手,我不知道如何包含WorkOrderDetailsC# 实体框架关系Foreach,c#,asp.net-mvc-3,linq,entity-framework-4.3,C#,Asp.net Mvc 3,Linq,Entity Framework 4.3,我有这些类,我正在使用一个存储库模式,并试图得到一个IEnumerable来包含workordeail。我是MVC和实体框架的新手,我不知道如何包含WorkOrderDetails public IEnumerable<Schedule> GetFuture() { string tZone = "Pacific Standard Time"; DateTime today = Today(tZone);
public IEnumerable<Schedule> GetFuture()
{
string tZone = "Pacific Standard Time";
DateTime today = Today(tZone);
var schedule = context.Schedules
.Where(s => s.Date >= today).ToList();
return schedule;
}
public abstract class Entity
{
public int Id { get; set; }
}
public class Schedule : Entity
{
public DateTime Date { get; set; }
public bool Free { get; set; }
public int WorkOrderId { get; set; }
public virtual WorkOrder WorkOrder { get; set; }
}
public class WorkOrder : Entity
{
public string Name { get; set; }
public string Type { get; set; }
public virtual ICollection<WorkOrderDetail> WorkOrderDetails { get; set; }
}
public class WorkOrderDetail : Entity
{
public string Job { get; set; }
public bool Finished { get; set; }
}
public IEnumerable GetFuture()
{
字符串tZone=“太平洋标准时间”;
DateTime today=今天(tZone);
var schedule=context.Schedules
.Where(s=>s.Date>=今天).ToList();
返回时间表;
}
公共抽象类实体
{
公共int Id{get;set;}
}
公共课程表:实体
{
公共日期时间日期{get;set;}
公共布尔自由{get;set;}
public int WorkOrderId{get;set;}
公共虚拟工单工单{get;set;}
}
公共类工作顺序:实体
{
公共字符串名称{get;set;}
公共字符串类型{get;set;}
公共虚拟ICollection WorkOrderDetails{get;set;}
}
公共类WorkOrderDetail:实体
{
公共字符串作业{get;set;}
公共bool已完成{get;set;}
}
更改此选项:
var schedule = context.Schedules.Where(s => s.Date >= today).ToList();
致:
或者使用ef 4.1+,您可以使用lambda语法,
.Include(s=>s.WorkOrder.workordedtail)
@LukeMcGregor我尝试过这个,但当我尝试访问视图'foreach(模型中的var detail)中的作业时,{@detail.WorkOrder.workordedtail.Job}“它不起作用了。@弗林当你试着那样做时会发生什么,你会得到一个例外吗?”?如果是这样,那是什么?@CodingGorilla我想出来了,我只需要使用模型上的selectmany来访问细节。我不确定这是否是最好的办法foreach(模型中的var细节,其中(i=>i.WorkOrderID==WorkOrderT.WorkOrderID)。选择Many(i=>i.WorkOrder.WorkOrderDetails)){@detail.Job}'
var schedule = context.Schedules.Include("WorkOrder.WorkOrderDetail").Where(s => s.Date >= today).ToList();