2013-02-09 28 views
6

Jaki jest efekt nie oznaczania właściwości nawigacyjnych wirtualnych dla encji Entity Framework (v4)?Entity Framework Virtual Properties

Jeśli nie używam leniwego załadunku, ale zaniedbuje się odpowiednio duże obciążenie, co się stanie po uzyskaniu dostępu do (nie załadowanej) nieruchomości?

Czy wystąpiłby jakikolwiek inny efekt poza leniwym ładowaniem, czy też jest to główna cecha wymagająca wirtualnych właściwości nawigacyjnych?

Odpowiedz

7

Istnieją dwa efekty. Jeden jest na leniwym załadunku, który po prostu nie zadziała, jeśli nieruchomość nie jest virtual. Ale leniwy załadunek nie zawsze jest czymś, co chcesz.

Drugim jest wykrywanie zmian. Jeśli używasz czystych POCO lub używasz serwerów proxy, ale nie robisz właściwości virtual, wtedy zmiana wykrywania staje się bardziej zaangażowana.

Możesz dowiedzieć się więcej o wykrywaniu zmian here.

0

Jeśli zastanawiasz się, czy odroczone ładowanie jest obsługiwane przez obiekty POCO, to myślę, że z przyjemnością dowiesz się, że możesz również odroczyć ładowanie z POCO.

Są dwie rzeczy, które trzeba zrobić, aby uzyskać wsparcie odroczony Ładowanie z podmiotami poco:

  1. stwierdzenie tę właściwość, że chcesz załadować leniwie jako wirtualny. Te właściwości mogą być dowolnymi typami kolekcji implementującymi interfejs ICollection lub mogą być referencjami reprezentującymi relację 1/0..1.

  2. Włącz odroczony załadunek od kontekstu

Zobacz MSDN's "POCO in the Entity Framework" post.