2011-06-01 6 views

cevap

16

Proxies iki özellik için gerekli olan:

  • Geç yükleme - Eğer varlık herhangi özelliğini değiştirirseniz bağlam bu değişiklik hakkında bilgilendirilir - navigasyon özelliklerini bir kez
  • dinamik olarak değiştirme izleme
  • ilk kez erişilen yüklenir ve varlığın durumunu ayarlayın. Dinamik değişiklik izleme kullanılmazsa, bağlam, kaydetme gerçekleşmeden önce tüm değişiklikleri bulma anlamına gelen anlık görüntü değişikliği izleme özelliğini kullanmalıdır = değiştirilmese bile tüm özellikleri araştırın.

Hem bu teknikler diğer gereksinimleri vardır:

  • Geç yükleme - taraftaki bütün navigasyon özellikleri virtual olmalıdır. Tembel yükleme etkinleştirilmelidir.
  • Dinamik değişiklik izleme - tüm eşlenen özellikler virtual olmalıdır.
+0

Merhaba, Yardımcı olabileceğiniz konusunda bir sorum var? ChangeTracker, içeriğe bağlı herhangi bir varlığı izler. Yani bir varlığın herhangi bir özelliğini değiştirirsem değiştirilmiş olarak işaretlenir. Yani bu sanal anahtar kelime olmadan zaten izleniyor demektir. Scalar özelliklerin, içerik tarafından izlendikleri için sanal olarak ayarlanmasına ihtiyaç duyulmaktadır. Ancak, skaler özelliklerin değişiklik izleme için sanal olarak işaretlendiği söylenir. Sanal anahtar kelimeyi değiştiren değişim, bahsettiğimden başka skaler özellikler üzerinde nelerdi? – UfukSURMEN

+1

@UfukSURMEN Oyunda değişik türde bir değişim izleme vardır. 'Sanal' özellikler, bir mülkün her değiştiğinde farkına varılan dinamik izlemeyi etkinleştirir. 'Virtual' anahtar sözcüğüyle, her bir özelliğin değerlerini' DetectChanges() 'ile önceki değerleriyle karşılaştıran anlık görüntü izleme kullanılır. Hangisini kullanmanız gereken [nüanslı bir soru] (https://blog.oneunicorn.com/2011/12/05/should-you-use-entity-framework-change-tracking-proxies/). –

+0

@BobSammers, bu konuyla ilgili cevabınız ve güzel makaleleriniz için teşekkürler. – UfukSURMEN

2

Önceki yanıtın yanı sıra, çalışma zamanı yansımayı kullanarak POCO sınıfınızı kullanın ve POCO sınıfınızı miras alan bir Dinamik Proxy sınıfı oluşturun. Bu nedenle, çalışma zamanında Tembel Yükleme ve Dinamik değişim İzlemeyi etkinleştirmek için Dinamik proxy'lere yardımcı olacak işlevselliği + EntityObject işlevlerini ekleyecektir.