DAL层得处理和业务层得处理差不多,都是具体得DAL实现BaseDal,然后实现自己得接口,在IBaseDal里面定义方法,在具体接口实现该IBaseDal
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace My.OA.IDAL
{
public interface IBaseDal<T> where T:class,new()
{
IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda);
IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount,
System.Linq.Expressions.Expression<Func<T, bool>> whereLambda,
System.Linq.Expressions.Expression<Func<T, s>> orderLambda, bool isAsc);
bool DeleteEntity(T entity);
bool EditEntity(T entity);
T AddEntity(T entity);
}
}
using My.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace My.OA.IDAL
{
public interface IUserInfoDal:IBaseDal<UserInfo>
{
}
}
using My.OA.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace My.OA.DAL
{
public class BaseDal<T> where T:class,new()
{
public DbContext Db
{
get
{
return DbContextFactory.CreateDbContext();
}
}
public T AddEntity(T entity)
{
Db.Set<T>().Add(entity);
//Db.SaveChanges();
return entity;
}
public bool DeleteEntity(T entity)
{
Db.Entry<T>(entity).State = System.Data.Entity.EntityState.Deleted;
//return Db.SaveChanges() > 0;
return true;
}
public bool EditEntity(T entity)
{
Db.Entry<T>(entity).State = System.Data.Entity.EntityState.Modified;
//return Db.SaveChanges() > 0;
return true;
}
public IQueryable<T> LoadEntities(Expression<Func<T, bool>> whereLambda)
{
return Db.Set<T>().Where(whereLambda);
}
public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount,
Expression<Func<T, bool>> whereLambda, Expression<Func<T, s>> orderLambda, bool isAsc)
{
var temp = Db.Set<T>().Where<T>(whereLambda);
totalCount = temp.Count();
if (isAsc)
{
temp.OrderBy<T, s>(orderLambda).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
}
else
{
temp.OrderByDescending<T, s>(orderLambda).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
}
return temp;
}
}
}
using My.OA.IDAL;
using My.OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace My.OA.DAL
{
public class UserInfoDal : BaseDal<UserInfo>,IUserInfoDal
{
}
}