/*********************************BaseDAL***********************************/
using Company.IDAL;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity.Migrations;
namespace Company.DAL
{
public class BaseDAL<T> : IBaseDAL<T> where T : class, new()
{
private DbContext dbContext = DbContextFactory.Create();
public void Add(T t)
{
dbContext.Set<T>().Add(t);
}
public void Delete(T t)
{
dbContext.Set<T>().Remove(t);
}
public IQueryable<T> GetModels(Expression<Func<T, bool>> whereLambda)
{
return dbContext.Set<T>().Where(whereLambda);
}
public IQueryable<T> GetModelsByPage<type>(int pageIndex, int pageSize, bool isAsc, Expression<Func<T, type>> orderLambda, Expression<Func<T, bool>> whereLambda)
{
if (isAsc)
{
return dbContext.Set<T>().Where(whereLambda).OrderBy(orderLambda)
.Skip((pageIndex - 1) * pageSize).Take(pageSize);
}
else
{
return dbContext.Set<T>().Where(whereLambda).OrderByDescending(orderLambda)
.Skip((pageSize - 1) * pageSize).Take(pageSize);
}
}
public bool SaveChanges()
{
return dbContext.SaveChanges()>0;
}
public void Update(T t)
{
dbContext.Set<T>().AddOrUpdate(t); //必须引入using System.Data.Entity.Migrations;
}
}
}
/***************************************StaffDAL*******************************************************************/
using Company.IDAL;
using Company.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Company.DAL
{
public class StaffDAL:BaseDAL<Staff>,IStaffDAL
{
}
}
/****************************************************DbContextFactory**************************************************************************/
using Company.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
namespace Company.DAL
{
public class DbContextFactory
{
public static DbContext Create()
{
DbContext dbContext = CallContext.GetData("DbContext") as DbContext;
if (dbContext==null)
{
dbContext = new MyCompanyEntities();
CallContext.SetData("DbContext", dbContext);
}
return dbContext;
}
}
}