Mam pole varbinary (max) w jednym z moich tabel, ale nie potrzebuję go za każdym razem i szukam sposobu, aby pobrać go z bazy danych tylko wtedy, gdy jest to konieczne. Używam ADO.NET Entity Framework. Jak to zrobić?Jak załadować pola varbinary (max) tylko w razie potrzeby z ADO.NET Entity Framework?
Odpowiedz
Roztwór utworzyć oddzielną tablicę z polem varbinary i uczynić związek 1-do-1 pomiędzy tabelach
Jednym ze sposobów byłoby projektu Twój wynik ustawiony na typ anonimowy kiedy nie trzeba blob:
from entity in context.Entities
select new
{
Field1 = entity.Field1,
Field2 = entity.Field2
}
W tym przykładzie, tylko Pole1 i Pole2 zostanie załadowany.
Ta metoda ma tę wadę, że nie można zaktualizować zwróconej instancji i wykonać context.SaveChanges. Chociaż twierdzę, że zapisanie instancji bez pełnej wiedzy o instancji jest na granicy niebezpiecznej. Ta metoda jest dobra, gdy chcesz mieć długą listę zwracanych instancji, ale będzie to zapytanie o pojedynczą instancję, zmienne pole i wszystko, zanim faktycznie zaktualizujesz.
Dziękujemy za pomoc. Szukałem czegoś podobnego do leniwego ładowania pola varbinary :) ale wydaje się, że nie jest to możliwe. – Emil
nie jest koniecznie tworzyć oddzielną tabeli. Powinieneś zrobić kilka kroków. Załóżmy, że mamy tabelę "Dokumenty" (Id, Nazwa, Dane (varbinary)).
- Otwórz projektanta EF, skopiuj i wklej jednostkę "Dokument".
- Zmień nazwę na "DocumentData". Dodaj mapowanie do tabeli "Dokumenty".
- Usuń właściwość "Dane" w encji "Dokument".
- Usuń właściwość "Nazwa" w encji "DocumentData".
- Kliknij prawym przyciskiem myszy encję "DocumentData" i dodaj nowe powiązanie. Wybierz powiązanie 1 do 1 z jednostką "Dokument".
- Wybierz nowe powiązanie, przejdź do Właściwości, kliknij "..." w polu "Więzy referencyjne", wybierz jednostkę "Dokument" jako główną, pozostaw wszystko jako domyślną (Id -> Id) i kliknij OK.
Teraz zbuduj projekt.
UWAGA. Teraz podczas tworzenia nowego podmiotu „dokument” należy również utworzyć nowy podmiot „DocumentData”, nawet jeśli nie chcesz, aby umieścić jeszcze żadnych danych:
Document doc = new Document();
doc.Name = "My document";
doc.DocumentData = new DocumentData();
context.Documents.Add(doc);
context.SaveChanges();
Tabela podziału. Entity Developer narzędzie pozwala wykonać to wizualnie. Możesz odwzorować swój podmiot na różne tabele.
Powinieneś usunąć swoje zmienne pole ze stołu i umieścić je w innej tabeli, tworząc między nimi jeden do jednego. To jest dobra praktyka, ponieważ można łatwo wdrożyć leniwy załadunek i inne rzeczy ..
- 1. SQL Server Varbinary (max): wybierz podzbiór bajtów z pola varbinary
- 2. Entity Framework VS Ado.net
- 3. Używaj notacji naukowej tylko w razie potrzeby.
- 4. Optymistyczna współbieżność w ADO.NET Entity Framework
- 5. Klasy wewnętrzne z ADO.NET Entity Framework
- 6. Analiza wydajności ADO.NET i Entity Framework
- 7. Załaduj pakiet tylko w razie potrzeby w pakiecie R.
- 8. Run npm zainstalować tylko w razie potrzeby i/lub częściowo
- 9. Jak wstawić 0 w polu varbinary (max)
- 10. Czy wzór repozytorium ma być używany tylko z Entity Framework?
- 11. Framework jednostek i VARBINARY
- 12. Jak zarządzać zainstalowanymi aplikacjami (w razie potrzeby z uprawnieniami administratora)?
- 13. Jak wczytać skrypty w razie potrzeby za pomocą require.js?
- 14. Jak uzyskać płynną nhibernate do utworzenia varbinary (max) pola w serwerze sql
- 15. SQLite z Entity Framework
- 16. HighStock: Ładowanie danych seryjnych w razie potrzeby asynchronicznie
- 17. Fluent NHibernate, varbinary (max) i SQLite
- 18. Jak wyświetlić okno dialogowe onbeforeunload w razie potrzeby?
- 19. Przeczytaj VARBINARY (MAX) z SQL Server do C#
- 20. Automatyczne dzielenie wysokości z przepełnieniem i przewijanie w razie potrzeby
- 21. Czy połączenie ADO.NET Entity Framework i ASP.MVC jest błędne?
- 22. SQL Server 2008 R2 Varbinary Max Size
- 23. Entity Framework 4.1 automatycznie generuje z DbContext podczas tworzenia ADO.NET Entity Data Model
- 24. Pobierz varbinary (MAX) z SQL Server do bajtu [] w C#
- 25. Entity Framework: Aktualizowanie pola do wartości pustej?
- 26. Entity Framework Query Optimization
- 27. Kontrakty WCF z Entity Framework?
- 28. Jak umieścić zawartość pliku .pdf w kolumnie varbinary (max)
- 29. Entity Framework sugerują niepoprawną nazwę pola
- 30. Jak mogę zobaczyć zmiany w Entity Framework?
Nie zawsze jest to możliwe na istniejącym schemacie, ale prawdopodobnie jest to najprostsze podejście, gdy jest to możliwe. Zrobiłem to, z obcym kluczem do "drugorzędnego" stołu w moim "głównym stole", sprawdzając, czy FK ma wartość zerową, czy też nie pozwala na szybkie poznanie, czy zapis "drugorzędny" nie musi go faktycznie ładować. – AFract