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

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008