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

 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    }

  

原文地址:https://www.cnblogs.com/shuai7boy/p/5288005.html