c语言编程笔录

首页 >   > 笔记大全

笔记大全

总结EF通用数据层封装类实例详解

更新时间:2023-11-15

什么是EF通用数据层封装类

EF通用数据层封装类是一种面向对象编程思想,将EF的各种操作进行封装,使程序员能够更加方便的操作数据库,同时也提高了程序的可维护性和可扩展性。通过EF通用数据层封装类,程序员可以实现对增、删、改、查等基本数据库操作的封装和调用。

public class EFRepository : IRepository where TEntity : class
{
    //EF上下文对象
    private readonly DbContext _dbContext;
    //DbSet对象
    private readonly DbSet _dbSet;

    //构造函数
    public EFRepository(DbContext dbContext)
    {
        _dbContext = dbContext;
        _dbSet = _dbContext.Set();
    }

    //增加实体
    public void Add(TEntity entity)
    {
        _dbSet.Add(entity);
    }

    //删除实体
    public void Delete(TEntity entity)
    {
        _dbSet.Remove(entity);
    }

    //更新实体
    public void Update(TEntity entity)
    {
        _dbSet.Attach(entity);
        _dbContext.Entry(entity).State = EntityState.Modified;
    }

    //查询实体列表
    public IQueryable GetList(Expression> whereLambda)
    {
        return _dbSet.Where(whereLambda);
    }
}

EF通用数据层封装类的作用

EF通用数据层封装类的作用是将EF中的DBContext封装成通用的仓储类,这样我们只需要定义一个仓储接口,然后通过依赖注入将仓储接口注入到控制器中,就可以很方便的实现增删改查等功能的编写。

public interface IRepository where TEntity : class
{
    //增加实体
    void Add(TEntity entity);

    //删除实体
    void Delete(TEntity entity);

    //更新实体
    void Update(TEntity entity);

    //查询实体列表
    IQueryable GetList(Expression> whereLambda);
}

public class StudentController : Controller
{
    private readonly IRepository _repository;

    //依赖注入
    public StudentController(IRepository repository)
    {
        _repository = repository;
    }

    public ActionResult Index()
    {
        //查询所有的学生
        var students = _repository.GetList(s => true).ToList();

        return View(students);
    }
}

EF通用数据层封装类的优点

EF通用数据层封装类的优点主要体现在以下几个方面:

  • 简化数据访问层的开发:EF通用数据层封装类简化了数据访问层的开发,使得开发人员只需要关注业务逻辑的实现,而不需要关注底层的数据访问实现。
  • 规范数据访问:使用EF通用数据层封装类可以规范数据访问方式,例如可以对所有的CRUD操作进行统一的验证和处理,避免了代码重复导致的问题。
  • 可扩展性强:由于EF通用数据层封装类采用了面向对象的编程思想,因此很容易实现新的数据访问方法。
  • 代码重用率高:EF通用数据层封装类可以实现代码的封装复用,降低了代码的维护成本。

EF通用数据层封装类的应用场景

EF通用数据层封装类适用于需要对数据库进行增删改查等操作的开发场景,例如企业级应用、Web应用、桌面应用、移动应用等。同时,EF通用数据层封装类还适用于系统结构稳定,变化要求少的项目,这样可以避免在系统变化过程中对数据访问层的大规模重构。