From time to time we have to insert a large number of rows into the database, usually because of data import. There are many ways to do it, but the simplest one is to take DbContext, add into the collection, and call SaveChanges. When we use Entity Framework 6 or less, there are a few important rules to follow: Setting context.Configuration.AutoDetectChangesEnabled to false . By default Entity Framework uses change tracker to find all changes made to entities, to generate SQL scripts later. But all we do is make inserts so we know there are no changes, only new rows. There is no need to compare with existing items so change tracker can be disabled. Splitting inserts into batches. If you want to insert 10000 rows into the database, it is better to split them into small batches and call context.SaveChanges() after every n rows where n should be determined experimentally. 100 isn't bad value, but it depends on the size of data. Recreating DbContext after every batch. ...
Dobra zmiana miała wprowadzić nową jakość, więc postanowiłem przyjrzeć się dokładnie dzisiejszym wiadomościom. Oto krótkie podsumowanie: Na początku mamy zajawki. W pierwszej mowa o zatwierdzonym budżecie i wypowiedź Pana Kuczyńskiego "Minister finansów robił wszystko, aby móc wypełnić obietnice". Wyraźnie słychać, że to nie koniec zdania, ale zajawka się skończyła. Mozna pomyśleć, że minister finansów stara się jak może, ale w sumie nie wiem, bo to nie koniec zdania. Potem kolejna zajawka z Kanclerz Merkel i komentarzem w tle "Walka o przetrwanie". Oglądamy nagranie, na którym jakaś Pani mówi "Słyszałam plotkę, że ma jechać do Chile". Najwyraźniej kanclerz Merkel jest w tak złej sytuacji, że została jej jedynie ucieczka z kraju. Podpowiadam, że w jednym z ostatnich sondaży partia Pani Merkel ma 32,5% poparcia i wygrywa wybory. Źródłem tego sondażu jest wiadomość z portalu wPolityce, którego nie posądzałbym o sprzyjanie Kanclerz Merkel, wrę...
Everyone knows IDisposable interface, right? Right. It is simple. If you use unmanaged resources, you should implement IDisposable and release them when your object is being disposed. Simple. But IDisposable is a very special interface. It even has its own keyword: using . Example use: Code above is equal to: Constructor is called first, then we are doing something inside, and at the end Dispose method is called to finalize work. So maybe we could use IDisposable not only to clean up unmanaged resources, but as a shorter form of try / finally to put our code in specific context. That sounds like a great idea and obviously it is not mine. This idea was used in few places in .NET libraries. Here are 4 examples of IDisposable: First example. This is code from ASP.NET MVC to generate HTML form using Razor: Output of this code will be close to: What happens? Html.BeginForm() is a function that writes "<form>" to response and returns MvcForm type object. MvcF...
Comments
Post a Comment