Czy virtual
słowo kluczowe ma wpływ, gdy jest używane we właściwościach kodu EF Najpierw ?. Czy ktoś może opisać wszystkie jego konsekwencje w różnych sytuacjach?
Na przykład wiem, że może kontrolować leniwe ładowanie - jeśli użyjesz wirtualnego słowa kluczowego we właściwości relacji ICollection / jeden do wielu, domyślnie zostanie on załadowany leniwie, a jeśli pozostawisz wirtualne słowo kluczowe, to będzie być chętnym.
Jakie inne efekty może virtual
mieć słowo kluczowe w EF z jednostkami POCO ?. Czy powinienem ustawić domyślną opcję używania virtual
we wszystkich moich właściwościach, czy też domyślną opcję nieużywania?
źródło
public virtual byte[] bigData { get; set; }
ładowanie jest opóźnione?.Select(a=>new { fields you want })
.To wirtualne słowo kluczowe jest powiązane z tematem ładowania danych z frameworku encji (leniwe ładowanie, szybkie ładowanie i jawne ładowanie).
Powinieneś używać wirtualnego słowa kluczowego, gdy chcesz ładować dane z opóźnionym ładowaniem.
leniwe ładowanie to proces, w którym jednostka lub zbiór jednostek jest automatycznie ładowany z bazy danych przy pierwszym dostępie.
Na przykład podczas korzystania z klasy encji Blog zdefiniowanej poniżej powiązane posty zostaną załadowane przy pierwszym otwarciu właściwości nawigacji Posty:
Leniwe ładowanie kolekcji Postów można wyłączyć, ustawiając właściwość Posty na inną niż wirtualna.
jeśli leniwe ładowanie jest wyłączone, ładowanie kolekcji Postów nadal można osiągnąć przy użyciu szybkiego ładowania (przy użyciu metody Uwzględnij) lub jawnego ładowania powiązanych obiektów (przy użyciu metody Ładuj).
Chętnie ładuję:
Jawne ładowanie:
źródło
Include()
.