Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
EF6 Performance verbessern
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

EF6 Performance verbessern

beantworten | zitieren | melden

Hi leute,

ich probiere gerade ein wenig mit dem Entity Framework rum und habe per button click einen Datensatz in eine Tabelle geschrieben. Dies kam mir jedoch sehr sehr langsam vor, weswegen ich mal die zeit gestoppt hab

private void Button_Click(object sender, RoutedEventArgs e)
		{
			Stopwatch s1 = new Stopwatch();
			s1.Start();
			_vm.AddEntry();
			s1.Stop();		
		}

public void AddEntry()
		{


			using (HSDODatabaseEntities ent = new HSDODatabaseEntities()) {
				PlayerClass pc = new PlayerClass();
				pc.NameDe = "ein test";
				pc.NameEn = "a test";
				ent.PlayerClasses.Add(pc);
				ent.SaveChanges();
			}
		}

Die Stop uhr sagt mir das er dafür ungefähr 1,16 Sekunden braucht um den Datensatz anzulegen.
Das erscheint mir arg lang ... Ist das normal oder kann ich da noch was dran machen?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Coooder am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15806
Herkunft: BW

beantworten | zitieren | melden

Schau nach, welche Methode genau so lange braucht.
Miss Methode für Methode.

Und: schau Dir mal den Repository Pattern an.
Jedes mal einen Context zu erstellen, wenn man nur ein Add() ausführen will ist natürlich kontraproduktiv.

In meinem Blog ORM-Wahl fürs Web: Entity Framework+MSSQL oder MongoDB? vergleiche ich ja die Performance; und EF ist nicht "perfekt" - aber mit 10 Entries /s weit aus schneller als Dein Wert.

Gleich eins Vorweg:
Cultures haben i.d.R. in Entitäten recht wenig zutun.
Überleg Dir also, ob Du DE und EN-Angelegenheiten nicht anders umsetzen kannst. Sowas bläht ein System schnell (unnötig) auf.
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo Coooder,

es gibt unzählige Lösungen für das Repo-pattern / UnitOfWork für das EF. (Auch bei mir im NuGet in der Signatur).

Benutz es und miss mal die Zeit damit. Ich kann mir nicht vorstellen, dass es _jedesmal_ 1,16 Sekunden dauert einen Datensatz hinzuzufügen. Mach das mal mit 10000 Datensätzen und dann ein SaveChanges() und die Zeit durch eben die Anzahl teilen. Einfach irgendwas, damit man mal realistischere Werte bekommt.

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Hallo

ist das nur beim ersten mal so? Da muß er das Mapping laden. Wieviele Tabellen?
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

beantworten | zitieren | melden

Vielen dank für die schnellen Antworten!

Das Pattern werd ich mir bei Zeiten mal angucken! Und ja das mit den Sprachen sollte ich wirklich anders lösen, da hast du Recht.
Zitat von witte
Hallo

ist das nur beim ersten mal so? Da muß er das Mapping laden. Wieviele Tabellen?

Wie recht du hast! Ja es war nur beim ersten mal so! Danach gehts wesentlich schneller ...
Vielen dank für den Hinweis!

Moderationshinweis von Abt (22.10.2014 - 14:22:50):

[Hinweis] Wie poste ich richtig? 2.3 - bitte keine Fullquotes mehr. Bist lang genug dabei, dass Du das wissen müsstest ;-)

private Nachricht | Beiträge des Benutzers