代码之家  ›  专栏  ›  技术社区  ›  Mike

实体框架IQueryable

  •  1
  • Mike  · 技术社区  · 17 年前

    我在查询实体模型以获取其他信息时遇到问题。

    My db有一个与事件表具有一对多关系的程序表。实体模型可以很好地生成关系,但我不知道如何查询模型来获取program对象及其事件。

    我可以这样做:

    var foo = from program in entities.ProgramSet
              where program.StartDate > DateTime.now
              orderby program.StartDate
              select program;
    

    // 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();
    

    但是,在查询中找不到.Include或Include。

    以下是我的项目中的一些示例代码:

    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;
    
    
        }
    

    对于FinDupComing程序,我希望它也包含事件数据。程序和事件模型之间存在关系。程序有一个列表 < 事件 > 属性,我希望用IQueryable方法填充并返回该属性。

    再次感谢!

    1 回复  |  直到 14 年前
        1
  •  2
  •   bytebender    17 年前

    包含函数是ObjectQuery对象的一部分。。。

    我认为您需要重新编写查询,使其看起来像这样:

    var contacts = context.Contact.Include("SalesOrderHeader.SalesOrderDetail").FirstOrDefault(); 
    
    //Not sure on your dot path you might have to debug that a bit
    

    这是一个 Article 这有一些例子。。。