EF---结合三层方法的应用

来源:互联网 发布:java电商项目源码 编辑:程序博客网 时间:2024/05/22 03:20
 1 public class CustomerDAL 2     { 3        //数据库上下文对象 4        YYMMVCEntities db = new YYMMVCEntities(); 5        /// <summary> 6        /// 新增操作 7        /// </summary> 8        public int Add(Customer customer) 9        {10            db.Customers.AddObject(customer);11            //保存成功后会将自增的ID设置成customer的主键属性12           return db.SaveChanges();13        }       14        //删除15        public int DeleteBy(int cid)16        {17            Customer customer=new Customer(){CID = cid};18            db.Customers.Attach(customer);19            db.Customers.DeleteObject(customer);20            return db.SaveChanges();21        }22        //根据条件删除23        public int DeleteExpression(System.Linq.Expressions.Expression<Func<Customer,bool>> deleWhere)24        {25            List<Customer> customers=db.Customers.Where(deleWhere).ToList();26           customers.ForEach(m=>db.Customers.DeleteObject(m));27            return db.SaveChanges();28        }29 30        //修改方法31        public  int Modify(Customer customer)32        {33            db.Attach(customer);34            db.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);35            return db.SaveChanges();36        }37        //查询38        publicList<Customer> GetListBy(System.Linq.Expressions.Expression<Func<Customer,bool>> seleWhere)39        {40            return db.Customers.Where(seleWhere).ToList();41        }42        //查询和排序43        public List<Customer> GetListBy<Tkey>(System.Linq.Expressions.Expression<Func<Customer,bool>> seleWhere,System.Linq.Expressions.Expression<Func<Customer,Tkey>> orderWhere)44        {45            return db.Customers.Where(seleWhere).OrderBy(orderWhere).ToList();46        }47        //分页查询48        public List<Customer> GetListPaged(int pageIndex,int pageSize,System.Linq.Expressions.Expression<Func<Customer,bool>> orderbyWhere)49        {50            return db.Customers.OrderBy(orderbyWhere).Skip((pageIndex - 1)*pageSize).Take(pageSize).ToList();51        } 52    }

  

然后我们在DAL层新建一个BaseDAL类,类中内容是通过CustomerDAL修改而来的,将出现Customer的地方替换成了T,出现Customers的地方改成了CreateObjectSet<T>()

,修正后的类如下

1 public class BaseDAL<T> where T:class,new() 2     { 3         //数据库上下文对象 4         YYMMVCEntities db = new YYMMVCEntities(); 5         /// <summary> 6         /// 新增操作 7         /// </summary> 8         public int Add(T customer) 9         {10             //必须限定T的类型,只能为引用类型11             db.CreateObjectSet<T>().AddObject(customer);12             //保存成功后会将自增的ID设置成customer的主键属性13             return db.SaveChanges();14         }15 16         //删除17         public int DeleteBy(T model)18         {19             20             db.CreateObjectSet<T>().Attach(model);21             db.CreateObjectSet<T>().DeleteObject(model);22             return db.SaveChanges();23         }24         //根据条件删除25         public int DeleteExpression(System.Linq.Expressions.Expression<Func<T, bool>> deleWhere)26         {27             List<T> customers = db.CreateObjectSet<T>().Where(deleWhere).ToList();28             customers.ForEach(m => db.CreateObjectSet<T>().DeleteObject(m));29             return db.SaveChanges();30         }31 32         //修改方法33         public int Modify(T customer)34         {35             db.CreateObjectSet<T>().Attach(customer);36             db.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);37             return db.SaveChanges();38         }39 40         //查询41         public List<T> GetListBy(System.Linq.Expressions.Expression<Func<T, bool>> seleWhere)42         {43             return db.CreateObjectSet<T>().Where(seleWhere).ToList();44         }45         //查询和排序46         public List<T> GetListBy<Tkey>(System.Linq.Expressions.Expression<Func<T, bool>> seleWhere, System.Linq.Expressions.Expression<Func<T, Tkey>> orderWhere)47         {48             return db.CreateObjectSet<T>().Where(seleWhere).OrderBy(orderWhere).ToList();49         }50         //分页查询51         public List<T> GetListPaged(int pageIndex, int pageSize, System.Linq.Expressions.Expression<Func<T, bool>> orderbyWhere)52         {53             return db.CreateObjectSet<T>().OrderBy(orderbyWhere).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();54 55         } 56    }

  

0 0
原创粉丝点击