У меня возникают проблемы с запросом модели сущности для получения дополнительной информации.Entity Framework IQueryable
У моего db есть таблица программ, в которой отношение одного к большому с таблицей событий. Модель Entity создает отношения очень хорошо, но я не могу понять, как запросить модель, чтобы получить объект progam со своими событиями.
Я не могу это сделать:
var foo = from program in entities.ProgramSet
where program.StartDate > DateTime.now
orderby program.StartDate
select program;
Никаких проблем нет. Из того, что я нашел на странице Microsoft (формирование запросов с помощью инфраструктуры Entity): 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, а не 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 Я хотел бы, чтобы он также включает в себя событие данных. Существует связь между моделью «Программа и события». Программа имеет свойство <
Events, которое я хотел бы заполнить и вернуть с помощью метода IQueryable.
Еще раз спасибо!
не работали с EF, но вызов FirstOrDefault() сделает запрос выполненным в любом случае. – CSharpAtl
Да, это будет, и я хотел бы избежать, образец с FirstOrDefault() был с веб-сайта Microsoft. – Mike