我想创建一个公共方法,它接受查询和类名作为参数,并从DAL(数据访问层)类返回一个通用列表。
List<Employee> empList = objDAL.GetList(Employee,"Select * FROM Employee");
List<Student> studList = objDAL.GetList(Student,"Select * FROM Student");
是否可以从DAL班级打电话?我怎么能这样做?
答案 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.
以与您的每个实体进行交互。