DbSet.Add() dodaje pojedynczą jednostkę do DbSet. Ale nie ma DbSet.AddRange(), aby dodać listę podmiotów. Czy istnieje metoda, którą mogę wywołać bezpośrednio z EF, która pozwala mi dodać listę jednostek? Jeśli nie, czy istnieje jakiś powód, dla którego EF nie zapewnia takiej metody?Jak dodać listę podmiotów do DbSet
Odpowiedz
Komentarz Erangi jest prawdopodobnie prawdziwy. Domyślam się, co należy zrobić, jeśli dowolny element na liście ma ustawioną właściwość klucza, jeśli kluczem dla tabeli podstawowej jest kolumna tożsamości:
- Zgłaszanie wyjątków? LUB
- ustawić klucz na zero, aby wstawić nowy obiekt z innym kluczem? LUB
- zaktualizować encję za pomocą tego samego klucza?
Z tego powodu nie ma większego sensu implementacja funkcji AddRange() do ogólnej klasy DbSet. Jeśli chcesz coś konkretnego sylwetkę swoje potrzeby, można przedłużyć DbSet następująco
public static class EFExtension
{
public static void AddRange<TEntity>(this DbSet<TEntity> dbSet, IList<TEntity> entities) where TEntity : class
{
foreach (TEntity e in entities)
{
dbSet.Add(e);
}
}
}
W EF6 zarówno DbSet.AddRange
i DbSet.RemoveRange
są dostępne.
Powodem ich zastosowania jest poprawienie wydajności, co można zrobić, wyłączając DetectChanges
dla każdego dodania lub usunięcia jednostki.
Więcej szczegółów:
UWAGA: Nie ma jeszcze oficjalnej dokumentacji dla tej metody, jak EF jest jeszcze RC1.
AKTUALIZACJA: EF6 został wydany, i the official documentation for .AddRange() is here, ale wyjaśnienie, co dzieje się wewnątrz niego w linkach powyżej.
- 1. dostęp do własności DbSet wg nazwy
- 2. Wyraźne rok-miesiące z Linq (do podmiotów)
- 3. Czy można dodać listę zdarzeń do DIV?
- 4. LINQ do podmiotów - gdzie w klauzuli zapytania
- 5. linq do podmiotów generowanych sql
- 6. LINQ wyrażenie filtrować listę kolekcji jednostki i utrzymywać wykaz podmiotów
- 7. Używanie LINQ Aby zaktualizować obiekt w listę podmiotów
- 8. Jak dodać program do systemu Windows dodaj/usuń listę programów
- 9. Jak dodać do listy listę elementów w języku C#?
- 10. jak dodać listę ciągów do napisów przy użyciu linq?
- 11. Entity Framework i DbSet
- 12. Jak przekonwertować DbSet w strukturze Entity do ObjectQuery
- 13. Jak rzucić DbSet <T> na listę <T>
- 14. Skuteczny sposób aktualizowania listy podmiotów
- 15. Jak dodać "Nazwa dostawcy" w ciągu połączenia do pliku kontekstowego?
- 16. LINQ do podmiotów wykorzystujących SQL LIKE operatora
- 17. Najlepszy sposób używać LINQ do podmiotów z kolekcją własności
- 18. JPA: Pomysły do śledzenia ewolucji/zmian podmiotów
- 19. LEFT JOIN w LINQ do podmiotów?
- 20. Jak dodać wyjście do xpath
- 21. LINQ do podmiotów - Include() metoda nie ładowanie
- 22. LINQ do podmiotów nie rozpoznaje metody „System.Linq.IQueryable`
- 23. LINQ do podmiotów nie rozpoznaje metody „Int32
- 24. LINQ do podmiotów ignoruje moje oświadczenie orderby
- 25. SqlResultSetMapping kolumn i podmiotów
- 26. XDocument.Save() usuwa moje podmiotów
- 27. Jak dodać adnotacje danych dla podmiotów automatycznie tworzonych przez Data-First?
- 28. Kod EF-pierwszy PluralizowanieNazwyzekanieTrybu dla ONE DbSet
- 29. Jak dodać statyczną listę elementów w MVC Html.DropDownList()
- 30. Jak dodać do BigDecimal
Możesz napisać prostą metodę rozszerzenia, aby to osiągnąć. – Eranga
Nad tym właśnie pracuję. Zaskoczyło mnie to, dlaczego EF tego nie zapewnia? – hshen
Jest to po prostu narzędzie, które każdy może napisać. Istnieje wiele klas kolekcji, które nie mają metody "AddRange". Zapewnienie prostego interfejsu API z podstawową funkcjonalnością jest lepsze niż zaśmiecony interfejs. – Eranga