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和公共对象之间的最佳方法

最好的方法是using语句,因为它会自动调用Dispose。您可以保证您的处置逻辑会发生。事实上,这就是您应该如何使用像SqlConnectionSqlCommand这样的对象。所以你用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();
}
}