我在查詢實體模型時遇到問題以獲取其他信息。實體框架IQueryable
我的數據庫有一個程序表與一個事件表的一對多關係。實體模型生成的關係很好,但我無法弄清楚如何查詢模型來獲取progam對象的事件。
我可以這樣做:
var foo = from program in entities.ProgramSet
where program.StartDate > DateTime.now
orderby program.StartDate
select program;
沒有問題存在。從我在Microsofts頁面上找到的內容(使用實體框架整形查詢):msdn.microsoft.com/en-us/library/bb896272.aspx,如果我想獲取子對象,我只需執行以下操作:
// Define a LINQ query with a path that returns
// orders and items for a contact.
var contacts = (from contact in context.Contact
.Include("SalesOrderHeader.SalesOrderDetail")
select contact).FirstOrDefault();
但是,在查詢中找不到包含或包含。
有什麼建議嗎?我知道我可以在結果中做一個foreach,然後在其上運行一個.Events.Load(),但不會強制執行sql的IQueriable結果,而不是optomize它只在.ToList( )等被稱爲它?
這裏是我的項目的一些示例代碼:
public class ProgramRepository : CT.Models.IProgramRepository
{
CTEntities db = new CTEntities();
public IQueryable<Program> FindAllPrograms()
{
return db.ProgramSet;
}
public IQueryable<Program> FindUpcomingPrograms()
{
var programs = from program in FindAllPrograms()
where program.StartDate > DateTime.Now
orderby program.StartDate
select program;
return programs;
}
隨着我想擁有它也包括事件數據的FindUpComingPrograms。程序和事件模型之間有關係。程序有一個列表<
事件>
屬性,我想用IQueryable方法填充並返回。
再次感謝!
尚未與EF工作,但調用FirstOrDefault()將使查詢無論如何執行。 – CSharpAtl 2009-05-27 15:24:44
是的,它會的,我想避免,FirstOrDefault()的樣本來自Microsofts網站。 – Mike 2009-05-27 19:53:45