Tôi muốn biết cách tiếp cận tốt nhất giữa việc sử dụng câu lệnh và tạo biến công khai là gì. Ví dụ của tôi là như sau: Tôi có một lớp người quản lý kế thừa từ dùng một lần và lớp này có quyền truy cập vào dbcontext và phương thức của tôi. Những gì tôi đang làm bây giờ là trên lớp cs của tôi làm một ussing đến lớp đó và tạo ra và tiêu diệt đối tượng của tôi theo nhu cầu của tôi. Ví dụ:Cách tiếp cận tốt nhất giữa Sử dụng và đối tượng công cộng?
public class StudentManager: IDisposable
{
private ISchoolUnitOfWork _unitOfWork;
public StudentManager()
{
_unitOfWork = new SchoolUnitOfWork();
}
public IEnumerable<Student> GetStudents()
}
Mở lớp cs của tôi, tôi làm:
private IEnumerable<Stundets> GetStudents()
{
using (StudentManager manager = new StudentManager())
{
return = manager.GetStudents();
}
}
HOẶC
private StudentManager = new Studentmanager();
gì là cách tốt nhất để làm điều đó: có trường hợp của StudentManager của tôi (chỉ tạo kết nối và phá hủy khi rời khỏi trang) hoặc làm việc với using
?
Tôi hơi bối rối về điều đó. Cảm ơn trước!
Tôi cập nhật ngữ cảnh của mình trên cùng một người quản lý gọi là lưu trong ngữ cảnh của tôi là giao diện đơn vị công việc của tôi, tôi không truy cập trực tiếp vào ngữ cảnh, nhưng khi tôi xây dựng, tôi xây dựng một loại đơn vị công việc.
Tôi lưu các hoạt động của mình trên trình quản lý. Vì vậy, về quản lý của tôi về bản cập nhật, chèn, sửa đổi mà tôi gọi là phương pháp tiết kiệm, ví dụ:
public class StudentManager....
public Student UpdateStudent(Student student)
{
IStudentService service = new StudentService(_unitOfWork.StudentRepository);
Student student= service.Update(student);
_unitOfWork.Save();
return student;
}
Nói chung, tôi có một giao diện IUnitOfWork và UnitOfWork, cũng có một IRepository và một kho lưu trữ. Và tôi chỉ sử dụng một người quản lý để không khởi tạo UnitOfWork của tôi trực tiếp, nhưng với một người quản lý nó ... Tôi nghĩ đó là hợp pháp và hữu ích!
Lưu ý bên cạnh, doanh nghiệp của bạn các lớp không nên sở hữu kho và không cần IDisposable. Nhưng điều đó chỉ thay đổi vấn đề của bạn với kết nối. –
Không có gì sai với việc giữ ngữ cảnh trong một trường riêng và xử lý nó trong phương thức Dispose() của lớp xây dựng nó, IMO. Việc sử dụng khối là lối tắt đến mẫu thử/nắm bắt/cuối cùng để đảm bảo rằng các đối tượng dùng một lần được xử lý khi bạn làm xong - nhưng đây chỉ là * một mẫu * để đảm bảo rằng các đối tượng được xử lý kịp thời. Sự tồn tại của phím tắt này không tự động hiển thị tất cả các mẫu khác không sử dụng được. –