zoukankan      html  css  js  c++  java
  • 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    }
    

      

  • 相关阅读:
    基金相关知识整理
    Apache Shiro反序列化漏洞复现
    payload分离免杀
    Red Team 工具集之网络钓鱼和水坑攻击
    GPP(Group Policy Preference)组策略偏好漏洞利用
    AdFind
    python爬虫之beautifulsoup的使用
    xargs命令_Linux xargs命令:一个给其他命令传递参数的过滤器
    mutillidae之注册页面的Insert型报错注入
    mutillidae之Insert型注入
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/5288005.html
Copyright © 2011-2022 走看看