using CC.Yi.IDAL; using CC.Yi.Model; using Microsoft.EntityFrameworkCore; using System; using System.Linq; using System.Linq.Expressions; namespace CC.Yi.DAL { public class BaseDal : IBaseDal where T : class, new() { public DataContext Db; public BaseDal(DataContext _Db) { Db = _Db; } public IQueryable GetEntities(Expression> whereLambda) { return Db.Set().Where(whereLambda).AsQueryable(); } public int GetCount(Expression> whereLambda) //统计数量 { return Db.Set().Where(whereLambda).Count(); } public IQueryable> GetGroup(Expression> whereLambda, Expression> groupByLambda) //分组 { return Db.Set().Where(whereLambda).GroupBy(groupByLambda).AsQueryable(); } public IQueryable GetPageEntities(int pageSize, int pageIndex, out int total, Expression> whereLambda, Expression> orderByLambda, bool isAsc) { total = Db.Set().Where(whereLambda).Count(); if (isAsc) { var pageData = Db.Set().Where(whereLambda) .OrderBy(orderByLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize).AsQueryable(); return pageData; } else { var pageData = Db.Set().Where(whereLambda) .OrderByDescending(orderByLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize).AsQueryable(); return pageData; } } public T Add(T entity) { Db.Set().Add(entity); //Db.SaveChanges(); return entity; } public bool Update(T entity) { //所有字段均修改 Db.Entry(entity).State = EntityState.Modified; //return Db.SaveChanges() > 0; return true; } public bool Delete(T entity) { Db.Entry(entity).State = EntityState.Deleted; //return Db.SaveChanges() > 0; return true; } public bool Detete(int id) { var entity = Db.Set().Find(id);//根据id找到实体 Db.Set().Remove(entity);//由于这里先Find找到了实体,所以这里可以用Remove标记该实体要移除(删除)。如果不是先Find到实体就需要用System.Data.Entity.EntityState.Deleted return true; } } }