我在查询实体模型时遇到问题,无法获取更多信息。
我的数据库有一个Program表,它与Events表有一对多的关系。实体模型生成关系很好,但我无法弄清楚如何查询模型以获取带有事件的progam对象。
我可以这样做:
var foo = from program in entities.ProgramSet
where program.StartDate > DateTime.now
orderby program.StartDate
select program;
没有问题。从我在微软页面上找到的内容(使用实体框架修改查询):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();
但是,我可以在查询中找到.Include或Include。
有什么建议吗?我知道我可以在结果上做一个foreach,然后对它运行一个.Events.Load(),但是不会强制IQueriable结果执行sql,而不是仅在.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我希望它还包括事件数据。程序和事件模型之间存在关系。程序有一个List <
事件>
属性,我想填充并使用IQueryable方法返回。
再次感谢!
答案 0 :(得分:2)
Include函数是ObjectQuery对象的一部分...
我认为您需要重新编写查询,看起来像这样:
var contacts = context.Contact.Include("SalesOrderHeader.SalesOrderDetail").FirstOrDefault();
//Not sure on your dot path you might have to debug that a bit
这是Article,其中包含一些示例......