Zastanawiałem się, czy ktoś próbował leniwie załadować podklasę (gdzie nie wiadomo, czym jest podklasa, dopóki wynik nie zostanie zwrócony) przy użyciu EF i POCO?
Jest to trochę koszmar w NHibernate, ale działa, dopóki nie spróbujesz rzucić zwróconego wyniku do podklasy (ponieważ tworzony jest serwer proxy klasy podstawowej, nie można go rzutować).
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli mówisz o rzutowaniu właściwości naokreślonego typu pochodnego lub konkretnej implementacji interfejsu, nie, nie można tego zrobić, a IMHO nie należy tego robić. Jeśli właściwość ma zwrócić implementację określonego interfejsu, należy się z nią komunikować za pośrednictwem tego interfejsu. jest zwykle znakiem, że robisz coś złego.
W przeciwnym razie właściwości są leniwie ładowane przy dostępie bez problemów (jeśli są skonfigurowane do leniwego ładowania).
1 dla odpowiedzi nr 2
Możesz rozwinąć „tam, gdzie nie jest”, co to jest podklasa, dopóki wynik nie zostanie zwrócony ”, ale ...
Używałem Lazy Loading w EF 4 z POCO i wszystko działa gładko jak masło. Wszystko jest zapełniane, kiedy go potrzebuję, bez kodu ode mnie.