Für die Realisierung eines Datenbankzugriffs in einer .NET Framework 4 Anwendung hat sich das Entity Framework etabliert. Es ist den Kinderschuhen entwachsen und bietet eine Reihe von Vereinfachungen:
- effiziente Datenabfrage mit Hilfe von Linq
- typsicherer Datenzugriff
- flexible Generierung von Data Transfer Objects (DTO) incl. Change Tracking über Service Grenzen hinweg
- Abstraktion des Datenbanktyps
- hohe Performance
Letzterer Punkt wird, wenn man mit großen Datenmengen arbeitet, häufig falsch eingeschätzt. Die Geschwindigkeit beim Einfügen von Datensätzen unterscheidet sich sehr stark in Abhängigkeit davon ob der Visual Studio Debugger angehängt wurde.
Dies zeigt ein kleiner Performancetest:
1: using (var context = new CRMEntities())
2: {
3: for (var i = 0; i < 10000; i++)
4: {
5: var customer = new Customer()
6: {
7: Id = Guid.NewGuid(),
8: DateOfBirth = RandomDay(),
9: FistName = RandomString(10),
10: LastName = RandomString(15)
11: };
12:
13: context.Customers.AddObject(customer);
14: }
15: var stopwatch = new Stopwatch();
16: stopwatch.Start();
17: context.SaveChanges();
18: Trace.WriteLine("Elapsed Milliseconds: " + stopwatch.ElapsedMilliseconds);
19: }
Ohne Debugger benötigt man für das Einfügen von 10.000 Datensätzen circa 4 Sekunden. Im Gegensatz hierzu benötigt man im Visual Studio Debug Mode fast 80 Sekunden.
Eine Bewertung der Performance einer Anwendung sollte aus diesem Grund immer ohne angehängten Visual Studio Debugger erfolgen.