Ich würde gerne wissen, was der beste Ansatz zwischen der Verwendung von Anweisung und dem Erstellen einer öffentlichen Variablen ist. Mein Beispiel ist das folgende: Ich habe eine Manager-Klasse, die von Disposable erbt, und diese Klasse hat Zugriff auf meine dbcontext und Methoden dazu. Was ich jetzt mache, ist auf meiner cs-Klasse, die einen Kurs zu dieser Klasse macht und mein Objekt für meine Bedürfnisse erstellt und zerstört. Zum Beispiel:Der beste Ansatz zwischen Using und öffentlichen Objekt?
public class StudentManager: IDisposable
{
private ISchoolUnitOfWork _unitOfWork;
public StudentManager()
{
_unitOfWork = new SchoolUnitOfWork();
}
public IEnumerable<Student> GetStudents()
}
Auf meinem cs-Klasse-I tun:
private IEnumerable<Stundets> GetStudents()
{
using (StudentManager manager = new StudentManager())
{
return = manager.GetStudents();
}
}
ODER
private StudentManager = new Studentmanager();
Was ist der beste Weg, es zu tun: die Instanz von meinem StudentManager mit (nur eine Verbindung erstellen und zerstören, wenn Seite verlassen) oder mit der using
arbeiten?
Ich bin ein bisschen verwirrt darüber. Danke im Voraus!
Ich aktualisiere meinen Kontext auf dem gleichen Manager Aufruf der Speichern in meinem Kontext, der eine Schnittstelle von meiner Arbeitseinheit ist, ich nicht direkt auf den Kontext zugreifen, aber wenn ich es konstruiere ich einen Typ meine Einheit von Arbeit.
Ich speichere meine Crud-Operationen auf dem Manager. Also auf meinem Manager auf Aktualisieren, Einfügen, Ändern ich die Methode speichern aufrufen, zum Beispiel:
public class StudentManager....
public Student UpdateStudent(Student student)
{
IStudentService service = new StudentService(_unitOfWork.StudentRepository);
Student student= service.Update(student);
_unitOfWork.Save();
return student;
}
Im Allgemeinen habe ich eine Schnittstelle IUnitOfWork und ein UnitOfWork, auch eine IRepository haben und ein Repository. Und ich benutze nur einen Manager, um meine UnitOfWork nicht direkt zu instantiieren, sondern mit einem Manager ... Ich denke, das ist legal und nützlich!
Randnotiz, Ihr Unternehmen Klassen sollten die Repositories nicht besitzen und IDisposable nicht benötigen. Aber das verschiebt nur dein Problem mit der Verbindung. –
Es ist nichts falsch daran, den Kontext in einem privaten Feld zu belassen und ihn innerhalb der Dispose() - Methode der Klasse, die ihn erstellt, IMO, zu ordnen. Das Verwenden von Blöcken ist eine Verknüpfung zum try/catch/finally-Muster, das sicherstellt, dass Wegwerfobjekte entfernt werden, wenn Sie damit fertig sind - aber dies ist nur ein einziges Muster *, um sicherzustellen, dass Objekte rechtzeitig entsorgt werden. Das Vorhandensein dieser Verknüpfung macht nicht automatisch alle anderen Muster unbrauchbar. –