SORU
30 Mayıs 2012, ÇARŞAMBA


Varlık Çerçevesi Özellikleri Birden çok Düzeyleri Vardır

İnclude() yöntemi çalışır oldukça iyi nesneleri Listeler. Ama eğer iki düzeyden daha derin gitmek istersem ne olur? Örneğin, aşağıdaki yöntemi dahil özellikleri burada gösterilen ApplicationServers dönecektir. Ancak, ApplicationsWithOverrideGroup diğer karmaşık nesneleri tutan başka bir konteyner. Ben bir ekleme() bu özellik de? Ya nasıl bu özelliği tam olarak yüklemek için alabilir miyim?

Şimdi durum böyleyken, bu yöntemi:

public IEnumerable<ApplicationServer> GetAll()
{
    return this.Database.ApplicationServers
        .Include(x => x.ApplicationsWithOverrideGroup)                
        .Include(x => x.ApplicationWithGroupToForceInstallList)
        .Include(x => x.CustomVariableGroups)                
        .ToList();
}

Sadece Etkin özelliği (aşağıda) dolduracaktır ve Uygulama veya CustomVariableGroup özellikleri (aşağıda). Bunu nasıl gerçekleştiririm?

public class ApplicationWithOverrideVariableGroup : EntityBase
{
    public bool Enabled { get; set; }
    public Application Application { get; set; }
    public CustomVariableGroup CustomVariableGroup { get; set; }
}

CEVAP
30 Mayıs 2012, ÇARŞAMBA


query.Include(x => x.Collection.Select(y => y.Property))

Daha fazla örnek için Remarks bkz.

public IEnumerable<ApplicationServer> GetAll()
{
    return this.Database.ApplicationServers
        .Include(x => x.ApplicationsWithOverrideGroup.Select(y => y.Application))
        .Include(x => x.ApplicationsWithOverrideGroup.Select(y => y.CustomVariableGroup))
        .Include(x => x.ApplicationWithGroupToForceInstallList)
        .Include(x => x.CustomVariableGroups)
        .ToList();
}

Include() uzantısı bir yöntem olduğundan, using System.Data.Entity; kullanarak tablolar içinde olduğundan emin olmak gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • LimeFire

    LimeFire

    2 ŞUBAT 2012