6

Projemde EntityFramework POCO + proxy'leri + tembel yükleme özelliğini kullanıyorum. Bugün, Transaction sınıfının Rows ilgili koleksiyonunun HashSet (EntityCollection yerine) içerdiğini görmeye oldukça şaşırdım. Koleksiyondaki değişiklikleri izlemek için EntityCollection'a ihtiyacım var.Entity Framework - ilgili ICollection, HashSet'e dönüştürüldü

public class Transaction 
{ 
    public virtual ICollection<TransactionRow> Rows { get; set; } 
} 

Ancak diğer varlık sınıfları bunlarla ilgili toplama EntityCollection içine gerçekleşmiş bulunmaktadır.

Transaction'u ObjectQuery aracılığıyla yüklüyorum, bu nedenle bağlamda olması gerekir. Nesne için proxy de oluşturulur.

Herkes şunu söyleyebilir - Entity Framework ne kullanacağına nasıl karar verir - HashSet veya EntityCollection? Neden bazı şeyler HashSets olur?

cevap

2

Değişim izleme vekil bu iki koşul yerine getirildiği takdirde oluşturulur:

  • POCO sınıf herkese açıktır mühürlü olmayan ve tamamı (alıcı ve ayarlayıcı ile) özelliklerini devam
  • olmayan soyut

    olan sanal olarak işaretlenmiş
+0

Ouch, sınıfı bir kez daha inceledim ve koleksiyonun sanal olarak işaretlenmediğini fark ettim :) İpucu için teşekkürler! – Jefim