2011-09-28 23 views
5

DBContext SqlQuery kullanarak ham bir sql yürütmek ve sonra ilgili girişleri dahil etmek istiyorum. Aşağıdakileri denedim ama ilgili öğeleri yüklemiyor:EF 4.1 - DBContext SqlQuery ve İçer

string sql = "Select * from client where id in (select id from activeclient)"; 
var list = DbContext.Database.SqlQuery<Client>(sql).AsQueryable().Include(c => c.Address).Include(c => c.Contactinfo).ToList(); 

Herhangi bir yardım?

cevap

5

gibi bir şey kullanabilirsiniz. Include yalnızca ESQL veya linq-to entities ile çalışır, çünkü doğru SQL sorgusu oluşturmak için sorgu oluşturma sırasında işlenmesi gerekir. SQL sorgusunu bu yapım mekanizmasına geçiremezsiniz. Üstelik kodunuz, SQL sorgusunu olduğu gibi sonuçlandırarak ve sonuçlanan numaralandırmada Include'u aramaya çalışacaktır.

Ayrıca sonuç almak için basit linq sorgusu kullanabilirsiniz:

var query = from c in context.Clients.Include(c => c.Address).Include(c => c.Contactinfo) 
      join ac in context.ActiveClients on c.Id equals ac.Id 
      select c; 

Bu iç SQL katılmak ve böylece filtre aktif olmayan müşterilerdir üretmelidir.

1

değil direkt cevap, ancak bunun yerine ham sql sorgusu yazma sen mümkün değildir bu

_conext.Clients.Where(c => _conext.ActiveClients.Any(a => a.ClientId == c.Id));