Операторы Dynamic Include для нетерпеливой загрузки в запросе — EF 4.3.1

У меня есть такой метод:

public CampaignCreative GetCampaignCreativeById(int id)
        {
            using (var db = GetContext())
            {
                return db.CampaignCreatives
                    .Include("Placement")
                    .Include("CreativeType")                    
                    .Include("Campaign")
                    .Include("Campaign.Handshake")
                    .Include("Campaign.Handshake.Agency")
                    .Include("Campaign.Product")
                    .AsNoTracking()
                    .Where(x => x.Id.Equals(id)).FirstOrDefault();
            }
        }

Я хотел бы сделать список включений динамическим. Я пробовал:

public CampaignCreative GetCampaignCreativeById(int id, string[] includes)
        {
            using (var db = GetContext())
            {
                var query = db.CampaignCreatives;

                foreach (string include in includes)
                {
                    query = query.Include(include);
                }

                return query.AsNoTracking()
                    .Where(x => x.Id.Equals(id)).FirstOrDefault();                    
            }
        }

Но это не скомпилировалось. Я получил эту ошибку:

Невозможно неявно преобразовать тип «System.Data.Entity.Infrastructure.DbQuery» в «System.Data.Entity.DbSet». Существует явное преобразование (вам не хватает приведения?)

Кто-нибудь знает, как сделать список включений динамическим?

Спасибо

12
задан LeoD 3 April 2012 в 20:41
поделиться