Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL + Code First + problem z leniwym ładowaniem !

To jest dokładnie to, co się dzieje, ale myślę, że nie do końca z tego powodu, o którym myślisz. DataReader jest nadal otwarty, nie z powodu odroczonego wykonania w Linq, ale ponieważ nadal wykonujesz iterację wyników zapytania podczas próby uzyskania dostępu do innej właściwości, która nie jest jeszcze załadowana. Kiedy wywołujesz .ToList() wyniki są zwracane jednocześnie i przechowywane w List<TEntity> w pamięci klienta, zamiast zwracania 1 rekordu na raz.

Możesz obejść ten problem w MS SQL Server za pomocą ustawienia MultipleActiveResultSets=true w ciągu połączenia, ale MySQL nie obsługuje tego ustawienia. To, co powinieneś być w stanie zrobić, to niecierpliwie załadować dodatkowe dane, których potrzebujesz, używając .Include("tablename")

var houses = (from h in db.Houses.Include("Images")
              select h).Take(10);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić dane do tabeli 1 z zaznaczeniem pola z tabeli 2 (Codeigniter)

  2. Tworzenie bezpiecznego skryptu logowania w PHP i MySQL bez HTTPS

  3. MySQL - WYBIERZ WHERE data <X

  4. Zrozumienie prostego łączenia SQL?

  5. Nie znaleziono klasy „mysqli_connect”