Entity Framework 4 -: Schlechte performance mit SQL Server 2008

Ich bin die Entwicklung einer software basierend auf Entity Framework zum verarbeiten von Daten in einer MS SQL Server 2008-Datenbank.

[Trouble 1]

Ich habe gerade versucht, fügen Sie einige kleine Daten (über 2 Mb) von meinem Programm auf die Datenbank : die sehr schlechte Leistung ! Es dauert mehr als 1 minute einfügen dieser Daten !

Ich habe versucht, zu generieren vorkompilierte sichten, ich habe das gleiche Ergebnis 🙁

Allen meinen code verwenden Sie ein business-Schicht automatisch generiert aus .edmx-Datei mit T4-template) zur Verwaltung von Daten in einer service-Schicht. Es ist sehr praktisch zum navigieren in den Beziehungen von Objekten.

Wie verbessere ich die performance von diesen Einsätzen mit Entity Framework ?

[Trouble 2]

Auch, vor dem einfügen der Daten in Datenbank mit SaveChanges () - Methode, fülle ich mein Objekt Kontext mit AddObject () - Methode. Ich füge über 100 000 kleine Objekte (etwa 2 Mb), um meine Objekt-Kontext mit AddObject() : es dauert eine sehr lange Zeit (mehr als 10 Minuten) !

Wie kann ich abnehmen in dieser Zeit ?

UPDATE

Mein Programm speichern, müssen Sie mehr als 50 Mb in der Datenbank in weniger als 2-3 Minuten ? Denkst du es wird möglich sein, mit EF ?

  • Entity Framework ist ein Kompromiss zwischen den anfänglichen Benutzerfreundlichkeit und Leistung. Wenn Sie interessiert sind, in der Leistung, Weg von Entity Framework
  • das ist Wild, wenig hilfreich. Dies ist nicht die normale Leistung. Entfernen des EF könnte nicht zu beheben, und in jedem Fall würde, wie das Kurieren der Akne mit Enthauptung. Patrice muss Profil die app um das problem zu finden, gehen Sie nicht die Schuld-tools nach dem Zufallsprinzip.
  • Stuntz: Also, Ihrer Meinung nach, was jemand Profil EF ist hilfreicher? Heheh
  • Es ist absolut nützlich für Patrice Profil der app in der Entwicklung, als zu umschreiben Infrastruktur nach dem Zufallsprinzip. Architektur von Vorurteilen, ist nur selten eine erfolgreiche Strategie.
  • Stuntz: ich war der Annahme, dass es eine neue app, die funktioniert noch nicht, und hat unüberwindliche performance-Probleme. Genau das, was Sie erwarten würden, von einem EF-app
  • das ist nicht das, was ich erwarten würde, aus einem EF-app. Aber dann wieder, ich bin nicht die Art von person, die die Schuld-tools für meine Probleme.
  • Was bedeutet "2 Mo" bedeuten?
  • 2 Mb : 20 Byte Objekt (20 bytes x 100 000 Objekte = 2 000 000 Mb )
  • Sie sind also das einfügen von rund 100 Objekten aus die möglicherweise eine Int-und vielleicht eine sehr kurze Zeichenfolge mit 16 Zeichen oder weniger?
  • 1 int + 1 dezimal
  • Was ist die Quelle dieser int + dezimal? Warum ist es, dass Sie sich einfügen müssen 100000 von diesen Paaren? Sind Sie vor dem Befüllen eine lookup-Tabelle? Erfassen von sensor-Daten? Bitte erzählen Sie uns mehr über Ihr problem.
  • Es ist wissenschaftlicher Ergebnisse. Ich brauche, um es zu speichern, die für weitere Statistiken. In der Tat, ich brauche, um zu sparen Sie mehr als 50 Mb in 2-3 Minuten.
  • Sind Sie auf einfügen jedes Element in der Datenbank getrennt, oder sind Sie mit dem hinzufügen, daß Sie alle Ihre Daten-Objekte und dann das insert in eine SQL-Anweisung? Wenn Sie dabei die erste, das könnte die Ursache Ihrer Leistung. Sie wiederholt die Datenbank wird die Leistung erheblich beeinträchtigen. Ich schlage vor, Sie Profil als @Craig sagte.
  • Ich bin das hinzufügen Sie alle auf meiner Daten-Objekte und dann tun Sie den Einsatz mit SaveChanges()

Schreibe einen Kommentar