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

  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • The Onion

    The Onion

    14 Mart 2006