2016-06-02 4 views

Antwort

1

Während die Leute dies als eine meinungsbasierte Frage betrachten können, gibt es eine sehr reale Ziel Antwort auf die Frage.

Die Verwendung von statischen Daten Kontexte in jede Situation, wo es Threads, mehrere Benutzer sein, oder mehr ‚Ansichten‘ ist eine extrem extrem schlechte Idee.

Lassen Sie uns einen Blick darauf werfen hier:

public static List<Employee> InsertEmployee(Employee e) 
{ 
    dataContext.Employees.Add(e); 
    dataContext.SaveChanges(); 
    return GetAllEmployees(); 
} 

unschuldig Sieht genug, nicht wahr? Falsch. Diese Methode speichert jede Änderung, die der Kontext erkennt. Dies schließt Änderungen ein, die von anderen Benutzern und/oder Threads vorgenommen wurden.

Zum Beispiel bekommen wir alle Mitarbeiter im System. Und wir sagen dem Entity-Framework nicht, um die Entitäten zu verfolgen.

public static List<Employee> GetAllEmployees() 
{ 
    var query = from employee in dataContext.Employees 
       select employee; 
    return query.ToList(); 
} 

Also, wenn ein Thread war die Mitarbeiter zu laden, und den Namen ändern (aber nicht speichern, noch) nicht, und dann eine andere Seite InsertEmployee, die Namensänderung wird genannt wird ebenfalls gespeichert.

Ich kann nicht an einen einzelnen Fall denken, bei dem ein statischer Datenkontext in einer ASP.NET-Anwendung keine schlechte Idee ist.

+0

Ich dachte nie, dass SaveChanges alle Benutzer betrifft, wenn sie statisch sind. Unter bestimmten Umständen könnte es wahrscheinlich viele Kopfschmerzen verursachen. Es ist wahrscheinlich sicherer, alle Repositories nicht statisch zu machen. – SILENT

0

Ohne guten Grund.

Während es als statisches Repository implementiert wurde, verlor er die Macht der Abhängigkeitsinjektion und des Komponententests, während er im Gegenzug keine wirkliche Leistung erhielt.