SORU
28 Temmuz 2010, ÇARŞAMBA


Varlık çerçevesi etmeniz() sorgu Vardır birden fazla çocuk objeleri

Bu gerçekten bazı elemanter bir soru olabilir ama yayılan sorgu ÜÇ düzeyleri (veya daha fazla) yazarken birden fazla çocuk sahibi varlıkları dahil etmek için iyi bir yol ne?

4 tablo var yani ben: Company, Employee, Employee_Car ve Employee_Country

Şirket Çalışanı ile 1:m ilişki vardır.

Çalışan her iki Employee_Car ve Employee_Country ile 1:m ilişki vardır.

Eğer tüm 4 verileri Tablo döndüren bir sorgu yazmak istiyorum, şu anda yazıyorum:

Company company = context.Companies
                         .Include("Employee.Employee_Car")
                         .Include("Employee.Employee_Country")
                         .FirstOrDefault(c => c.Id == companyID);

Daha zarif bir yolu olmalı! Bu uzun soluklu ve korkunç SQL oluşturur

VS 2010 ile EF4 kullanıyorum

Şimdiden teşekkürler!

CEVAP
29 Temmuz 2010, PERŞEMBE


extension methodskullanın. DeğiştirinNameOfContextnesne içeriğinin adı ile.

public static class Extensions{
   public static IQueryable<Company> CompleteCompanies(this NameOfContext context){
         return context.Companies
             .Include("Employee.Employee_Car")
             .Include("Employee.Employee_Country") ;
     }

     public static Company CompanyById(this NameOfContext context, int companyID){
         return context.Companies
             .Include("Employee.Employee_Car")
             .Include("Employee.Employee_Country")
             .FirstOrDefault(c => c.Id == companyID) ;
      }

}

Sonra kodunuzu olur

     Company company = 
          context.CompleteCompanies().FirstOrDefault(c => c.Id == companyID);

     //or if you want even more
     Company company = 
          context.CompanyById(companyID);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DRDAnimation

    DRDAnimation

    28 EYLÜL 2012
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013