2012-08-22 22 views
8

İlk olarak Kod 5 ile birlikte kullanıyorum. Bazı özellikleri yüklemek için hevesli olmak istediğim bir dersim var. Ben sanal anahtar kelime kaldırılır ama istekli yükleme değil: bu olmaz oto istekli yük sağ tembel yükleme kapatarak YaniEF Kodu Zorla istekli yükleme

public class Person 
{ 
    public ICollection<Email> Emails { get; set; } 
    public Profile Profile {get;set;} 
} 

? Eğer öyleyse, Include() kullanmadan nasıl arşivlerim?

Teşekkürler!

cevap

18

Hayır, virtual anahtar sözcüğünü kaldırarak tembel yüklemeyi kapatmak, istekli yüklemeyi otomatik olarak etkinleştirmez. Öyle gibi ilgili Entity veya CollectionInclude zorunda:

var personWithProfile = ctx.People.Include(x => x.Profile).First(); 
var personWithProfileAndEmails = ctx.People. 
              .Include(x => x.Profile) 
              .Include(x => x.Emails) 
              .First(); 

Bu ADO.NET ekip blogdan büyük bir okuma: bağlantıdan http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx

+0

Teşekkür ve çok kullanışlı. Include komutunun farkındayım. Ancak istekli yüklemeyi POCO sınıf tanımında (veya harita dosyasını) doğru zorlamak için bir yol yoktur? – Calvin

+1

Hayır, EF'e veriyi ne zaman istekli yapmaya davet edeceğini açıkça söylemek istersiniz. Yapmazsanız ve EF tüm ilgili varlıkları dahil ederse, önemli performans sorunları olacaktır. Esasen, her bir ifade, bir SQL 'iç birleşimine dönüştürülür ve sorgu, birleştirilmiş tabloda da her sütunu seçer. – Paul

+0

Açıklama için teşekkürler! – Calvin