Nie mogę znaleźć żadnych przykładów na temat wstawiania zbiorczego/wsadowego za pomocą Linq do encji. Czy wiecie, jak zrobić Wstawkę zbiorczą?Jak wykonać Wstawianie zbiorcze - Linq do encji
Odpowiedz
Czasami trzeba po prostu wymieszać modele. Być może użyj SqlBulkCopy
dla tej części twojego repozytorium (ponieważ jest to wtyczka bezpośrednio do interfejsu API) i Entity Framework dla pozostałych elementów. A jeśli to konieczne, trochę bezpośredniego ADO.NET. Ostatecznie celem jest wykonanie pracy.
Aby uzyskać doskonały przykład wstawiania materiałów wsadowych z LINQ do jednostek, patrz http://archive.msdn.microsoft.com/LinqEntityDataReader. Jest to opakowanie, które umożliwia łatwe korzystanie z SqlBulkCopy.
@Marc Gravell jest poprawny, czasami trzeba mieszać modele, aby wykonać zadanie.
Napisałem klasę, która będzie wstawiała elementy EF luzem (lub jakikolwiek obiekt, o ile nazwy właściwości pasują do nazw kolumn).
Ta klasa obsługuje dostosowywanie rozmiaru wsadu, pre & zdarzeń wstawiania wstawek, wstawiania w kolejce i "trybu w trybie firehose" (nadaj mu miliard obiektów, będzie przestrzegać wielkości partii).
wstawiania ogromne ilości danych w bazie danych, kiedyś zebrać wszystkie informacje na wstawienie do listy i konwertować do tej listy w DataTable
. Następnie wstawiam tę listę do bazy danych poprzez SqlBulkCopy
.
Gdzie mogę wysłać moje wygenerowane listy LiMyList
które zawierają informacje o wszystkich danych luzem, które chcę wstawić do bazy
i przekazać ją do mojego zbiorczej operacji wstawiania
InsertData(LiMyList, "MyTable");
Gdzie InsertData
jest
public static void InsertData<T>(List<T> list,string TabelName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TabelName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
Możesz to zrobić, używając bulk insert extension
Używa SqlBulkCopy i niestandardowego datareader, aby uzyskać maksymalną wydajność. W rezultacie jest to ponad 20 razy szybciej niż przy użyciu zwykłego wkładkę lub AddRange
próbkę za pomocą efbulkinsert rozszerzenia:
context.BulkInsert(hugeAmountOfEntities);
To jest niesamowita biblioteka. Napisałem SqlBulkCopy od początku, ale jest to o wiele łatwiejsze i szybsze – Andrew
- 1. Jak wykonać LEFT JOIN w LINQ do encji?
- 2. Wstawianie zbiorcze z SQLAlchemy ORM
- 3. Jak kontynuować wstawianie zbiorcze, gdy wystąpi wyjątek
- 4. Wstawianie zbiorcze na urządzeniu z systemem Android
- 5. Wstawianie zbiorcze z parametrem nazwy pliku
- 6. Wstawianie zbiorcze LUB aktualizowanie za pomocą hibernacji?
- 7. Wstawianie zbiorcze w SQL Server CE
- 8. Wstawianie zbiorcze nie wstawia żadnych wierszy
- 9. LINQ do encji Dołącz do DateTime.DayOfWeek
- 10. LINQKit: zagnieżdżanie ExpandableQuery w LINQ do encji
- 11. warunkowe zawierają w linq do encji?
- 12. Jak wykonać wyszukiwanie pełnotekstowe (FTS) za pomocą Linq do struktury encji ADO.NET?
- 13. Równoległe wstawianie zbiorcze za pomocą SqlBulkCopy i Azure
- 14. LINQ do encji poprzez właściwość interfejsu
- 15. Duplikat LINQ do encji/rekordu SQL?
- 16. Jak wykonać surowe zapytanie sql w strukturze encji?
- 17. Jak używać WPD TreeView HierarchicalDataTemplate z LINQ do encji?
- 18. Jak korzystać z funkcji wartości skalarnej z linq do encji?
- 19. Jak zrobić wiele wewnętrznych połączeń w Linq do encji?
- 20. Jak ponownie użyć filtru pola w LINQ do encji
- 21. Linq do Encji od wielu do wielu wybierz zapytanie
- 22. linq do encji, gdzie gdzie klauzula? (wewnętrzne gdzie)
- 23. Jak przyspieszyć wstawianie zbiorcze do MS SQL Server z CSV przy użyciu pyodbc
- 24. Jak wykonać wiele operacji wewnątrz pętli C# LINQ ForEach?
- 25. wykonać niestandardowy sql ze strukturą encji?
- 26. Problem z LINQ do encji i String.Starts z
- 27. Porównaj daty używania LINQ do encji (Entity Framework)
- 28. LINQ do encji Zawiera Case In-Sensitive Searching
- 29. Moduł encji 6 Skompilowane zapytanie LINQ
- 30. Powielanie wierszy, gdy powiązanie danych z LINQ do encji
oh sieci doskonałości - niedziałający link –
znaleźć go tutaj ... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs –