我想要使用实体框架查询数据库,并且我需要在同一组表上查询几个不同的查询。我需要添加一些导航属性,我认为我应该能够定义“基本查询”(即具有所有导航属性的那个),然后根据需要进一步过滤并执行查询。过滤“基本查询”的结果稍有不同
某些代码可能有助于进一步解释,这就是我呼吁我的“基本查询”
private static IEnumerable<HelpdeskTicket> GetAll()
{
IEnumerable<HelpdeskTicket> Tickets;
using (ItManagement_Entities db = new ItManagement_Entities())
{
Tickets = db.HelpdeskTickets.Include("CreatedByPerson")
.Include("HelpdeskCategory")
.Include("HelpdeskPriority")
.Include("HelpdeskStatus");
}
return Tickets;
}
举个例子,一些我需要执行的查询是开放的门票,最近关闭的门票,我的门票,yada yada yada。
我的想法是有类似于以下的方法来做滤波比特而不需要h然后再次定义所有.Include()
。
public static List<HelpdeskTicketModel> GetAllTickets()
{
List<HelpdeskTicketModel> Tickets = new List<HelpdeskTicketModel>();
GetAll().OrderByDescending(t => t.TicketId)
.ToList()
.ForEach(t => Tickets.Add(HelpdeskTicketModel.Map(t)));
return Tickets;
}
public static List<HelpdeskTicketModel> GetRecentlyClosedTickets()
{
List<HelpdeskTicketModel> Tickets = new List<HelpdeskTicketModel>();
GetAll().Where(t => t.HelpdeskStatus.IsClosedStatus)
.OrderByDescending(t => t.ClosedTime)
.ToList()
.ForEach(t => Tickets.Add(HelpdeskTicketModel.Map(t)));
return Tickets;
}
//And so on...
当我尝试这个,我得到一个System.InvalidOperationException
抛出异常抱怨The operation cannot be completed because the DbContext has been disposed
,这是有道理的,因为真我的查询是在不同的上下文,在GetAll
方法。
问题是,我该如何去做我想做的事?
您可以随时将您的dbcontext传递到您的GetAllTickets方法。 – grin0048