Using和公共对象之间的最佳方法
本文关键字:最佳 方法 之间 公共对象 Using | 更新日期: 2023-09-27 18:24:28
我想知道使用语句和创建公共变量之间的最佳方法是什么。我的例子如下:我有一个从一次性继承的管理器类,这个类可以访问我的dbcontext和它的方法。我现在所做的是在我的cs类上对该类进行分析,并根据我的需要创建和销毁我的对象。例如:
public class StudentManager: IDisposable
{
private ISchoolUnitOfWork _unitOfWork;
public StudentManager()
{
_unitOfWork = new SchoolUnitOfWork();
}
public IEnumerable<Student> GetStudents()
}
在我的cs课上我做:
private IEnumerable<Stundets> GetStudents()
{
using (StudentManager manager = new StudentManager())
{
return = manager.GetStudents();
}
}
或
private StudentManager = new Studentmanager();
最好的方法是什么:拥有我的StudentManager实例(只需创建一个连接并在离开页面时销毁)还是使用using
?
我对此有点困惑。提前感谢!
我确实在同一个管理器上更新了我的上下文,该管理器在我的上下文中调用save,这是我工作单元的接口,我不直接访问上下文,但当我构建它时,我构建了一种类型的工作单元。
我确实节省了对经理的粗暴操作。所以在我的经理上更新、插入、修改我调用的保存方法,例如:
public class StudentManager....
public Student UpdateStudent(Student student)
{
IStudentService service = new StudentService(_unitOfWork.StudentRepository);
Student student= service.Update(student);
_unitOfWork.Save();
return student;
}
一般来说,我有一个接口IUnitOfWork和一个UnitOfWork,还有一个IRepository和一个存储库。我只是用一个管理器来不直接实例化我的UnitOfWork,而是用一个经理来实例化……我认为这是合法和有用的!
最好的方法是using
语句,因为它会自动调用Dispose
。您可以保证您的处置逻辑会发生。事实上,这就是您应该如何使用像SqlConnection
和SqlCommand
这样的对象。所以你用using
做得很好。
事实上,您已经说过您正在使用DbContext
来访问数据。这些应该按需实例化,并封装在using
中。不需要共享这些类型类的实例,因为连接池是通过连接字符串在SQL Server上完成的。
如果你使用using,那么可能是在一个单一的东西中,你需要多次写类似的东西。例如
//To get all students
private IEnumerable<Stundets> GetStudents()
{
using (StudentManager manager = new StudentManager())
{
return = manager.GetStudents();
}
}
//To save Students
//To get all students
private IEnumerable<Stundets> SaveStudents()
{
using (StudentManager manager = new StudentManager())
{
return = manager.Save();
}
}
等等。但在这里你不必担心物品的处理。它将自动得到处理。如果要进行全局声明,则需要手动进行。所以我需要说的是,如果你必须在整个页面上使用StudentManager,为什么不把它变成全球性的,并在所有需要的地方使用它,两者都用。像这样的
private StudentManager manager;
//To get all students
private IEnumerable<Stundets> GetStudents()
{
using (manager = new StudentManager())
{
return = manager.GetStudents();
}
}
//To save Students
//To get all students
private IEnumerable<Stundets> SaveStudents()
{
using (manager = new StudentManager())
{
return = manager.Save();
}
}