Zajmuję się tworzeniem aplikacji do przechowywania plików i dodaliśmy typ FileStream do naszej bazy danych. Oczekuje się, że system będzie obsługiwał duże pliki. Jedna część aplikacji pozwala na przesyłanie zbiorcze wielu dokumentów. Dokumenty te muszą następnie zostać połączone z innymi podmiotami w systemie.Jak uniemożliwić Entity Framework załadowanie kolumny FileStream do tablicy bajtów?
Jedna strona służy do wyświetlania niepowiązanych dokumentów, aby umożliwić użytkownikowi łączenie dokumentów pojedynczo z podmiotami. Po przeprowadzeniu testów obciążenia procesu przesyłania, okazało się, że ślad pamięci procesu roboczego ASP.NET wzrósł do ponad GB podczas ładowania strony Unlinked Documents.
Po przeprowadzeniu dochodzenia wydaje się, że Entity Framework ładuje cały encję wiersza dokumentu (łącznie z FileStream, przekonwertowaną na tablicę bajtów) dla setek niepowiązanych dokumentów. W mojej klasie repozytoriów nie zapisuję tablicy bajtów podczas konwersji do modelu, ale wtedy jest już za późno. EF spędził czas i pamięć, aby przydzielić tablicę bajtów do reprezentacji klasy Repozytorium.
Czy istnieje sposób, że mogę powiedzieć EF, aby nie ładować tej tablicy bajtów, chyba że ja jawnie o to poprosić?
http://stackoverflow.com/a/3293286/782754 nie jest możliwe, aby oznaczyć właściwość dla leniwych załadunku, ale można użyć innych pojęć –