EFHelper用于Web场景
public static class EFHelper
{
//初始化上下文
public static T1Entities db = DbContextHelper.GetCurrentDbContext();
//添加返回影响行数
public static int Add<T>(T model) where T : class
{
db.Set<T>().Add(model);
return db.SaveChanges();
}
//添加返回对象本身
public static T Add2<T>(T model) where T : class
{
db.Set<T>().Add(model);
db.SaveChanges();
return model;
}
//查询单条数据
public static T GetEntity<T>(Expression<Func<T, bool>> express) where T : class
{
return db.Set<T>().SingleOrDefault(express);
}
//查询所有
public static List<T> GetEntityList<T>() where T : class
{
return db.Set<T>().ToList();
}
//按条件查询数据
public static List<T> GetEntityList<T>(Expression<Func<T, bool>> express) where T : class
{
return db.Set<T>().Where(express).ToList();
}
//根据ID删除
public static int Delete<T>(T model) where T : class
{
db.Set<T>().Attach(model);
db.Set<T>().Remove(model);
return db.SaveChanges();
}
//根据条件删除
public static int DelList<T>(Expression<Func<T, bool>> delWhere) where T : class
{
//2.1.1 查询要删除的数据
List<T> listDeleting = db.Set<T>().Where(delWhere).ToList();
//2.1.2 将要删除的数据 用删除方法添加到 EF 容器中
listDeleting.ForEach(u =>
{
db.Set<T>().Attach(u); //先附加到EF 容器
db.Set<T>().Remove(u); //标识为删除状态
});
//2.1.3 一次性生成sql语句 到数据库执行删除
return db.SaveChanges();
}
//修改一条数据
public static int Modify<T>(T model) where T : class
{
DbEntityEntry entry = db.Entry<T>(model);
entry.State = System.Data.EntityState.Modified;
return db.SaveChanges();
}
//修改实体,可修改指定属性
public static int Modify<T>(T model, params string[] propertyNames) where T : class
{
//3.1.1 将对象添加到EF中
DbEntityEntry entry = db.Entry<T>(model);
//3.1.2 先设置对象的包装状态为 Unchanged
entry.State = System.Data.EntityState.Unchanged;
//3.1.3 循环被修改的属性名数组
foreach (string propertyName in propertyNames)
{
//将每个被修改的属性的状态设置为已修改状态;这样在后面生成的修改语句时,就只为标识为已修改的属性更新
entry.Property(propertyName).IsModified = true;
}
return db.SaveChanges();
}
//分页查询
public static List<T> GetPagedList<T, TKey>(int pageSize, int pageIndex, out int rowCount, Expression<Func<T, bool>> whereLambda, Expression<Func<T, TKey>> orderByLambda, bool isAsc = true) where T : class
{
rowCount = db.Set<T>().Where(whereLambda).Count();
if (isAsc)
{
return db.Set<T>().OrderBy(orderByLambda).Where(whereLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
else
{
return db.Set<T>().OrderByDescending(orderByLambda).Where(whereLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
public class DbContextHelper
{
public static T1Entities GetCurrentDbContext()
{
T1Entities dbContext = HttpContext.Current.Items["MyDbContext"] as T1Entities;
if (dbContext == null)
{
dbContext = new T1Entities();
HttpContext.Current.Items["MyDbContext"] = dbContext;
}
return dbContext;
}
}

浙公网安备 33010602011771号