Entity Framework IQueryable - PullRequest
       10

Entity Framework IQueryable

1 голос
/ 27 мая 2009

У меня проблемы с запросом модели сущностей для получения дополнительной информации.

У моей базы данных есть таблица программ с отношением один ко многим с таблицей событий. Модель Entity прекрасно генерирует отношения, но я не могу понять, как запросить модель, чтобы получить объект progam с его событиями.

Я могу сделать это:

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

Никаких проблем там нет. Из того, что я нашел на странице Microsoft (формирование запросов с помощью Entity Framework): 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 < Events >, которое я хотел бы заполнить и вернуть методом IQueryable.

Еще раз спасибо!

1 Ответ

2 голосов
/ 27 мая 2009

Функция включения является частью объекта ObjectQuery ...

Я думаю, вам нужно переписать запрос, чтобы он выглядел примерно так:

var contacts = context.Contact.Include("SalesOrderHeader.SalesOrderDetail").FirstOrDefault(); 

//Not sure on your dot path you might have to debug that a bit

Вот Статья , в которой есть несколько примеров ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...