从DAL返回通用列表

时间:2018-06-16 07:10:40

标签: c# list generics

我想创建一个公共方法,它接受查询和类名作为参数,并从DAL(数据访问层)类返回一个通用列表。

List<Employee> empList = objDAL.GetList(Employee,"Select * FROM Employee");
List<Student> studList = objDAL.GetList(Student,"Select * FROM Student");

是否可以从DAL班级打电话?我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可能需要考虑使用Repository Pattern

public class Repository<TEntity> where TEntity : class
{
    private DbContext db;
    private DbSet<TEntity> dbSet;

    public Repository(DbContext ctx)
    {
        db = ctx;
        dbSet = db.Set<TEntity>();
    }

    internal IQueryable<TEntity> GetAll()
    {
        return dbSet;
    }

    ... // Other CRUD operations
}

然后,您可以为这些实体实例化存储库:

private var _employees = new Repository<Employee>(dbContext);
private var _students = new Repository<Student>(dbContext);

并检索如下数据:

return _employees.GetAll();          // IQueryable<Employee>
return _students.GetAll().ToList();  // IEnumerable<Student>

存储库将成为您的DAL并为您提供通用的CRUD方法,Insert(), GetAll(), GetID(), Update(), Delete(), etc.以与您的每个实体进行交互。