1. 程式人生 > >【.Net碼農】【MVC】多層架構+MVC+EF+AUTOFAC+AUTOMAPPER

【.Net碼農】【MVC】多層架構+MVC+EF+AUTOFAC+AUTOMAPPER

1 namespace YTJWGL_EFDao 2 { 3 public class BaseEFDao<T> : IBaseDao<T> where T : class,new()//限制T的型別為class或者物件 4 { 5 6 7 #region 查詢普通實現方案(基於Lambda表示式的Where查詢) 8 /// <summary> 9 /// 獲取所有Entity 10 /// </summary> 11 /// <param name="exp">
Lambda條件的where</param> 12 /// <returns>返回IEnumerable型別</returns> 13 public virtual IEnumerable<T> GetEntities(Func<T, bool> exp) 14 { 15 using (Entities db = new Entities()) 16 { 17 return db.Set<T>().Where(exp).ToList();
18 } 19 20 21 } 22 /// <summary> 23 /// 計算總個數(分頁) 24 /// </summary> 25 /// <param name="exp">Lambda條件的where</param> 26 /// <returns></returns> 27 public virtual int GetEntitiesCount(Func<T, bool> exp)
28 { 29 using (Entities db = new Entities()) 30 { 31 return db.Set<T>().Where(exp).ToList().Count(); 32 33 } 34 } 35 /// <summary> 36 /// 分頁查詢(Linq分頁方式) 37 /// </summary> 38 /// <param name="pageNumber">當前頁</param> 39 /// <param name="pageSize">頁碼</param> 40 /// <param name="orderName">lambda排序名稱</param> 41 /// <param name="sortOrder">排序(升序or降序)</param> 42 /// <param name="exp">lambda查詢條件where</param> 43 /// <returns></returns> 44 public virtual IEnumerable<T> GetEntitiesForPaging(int pageNumber, int pageSize, Func<T, string> orderName, string sortOrder, Func<T, bool> exp) 45 { 46 using (Entities db = new Entities()) 47 { 48 if (sortOrder == "asc") //升序排列 49 { 50 return db.Set<T>().Where(exp).OrderBy(orderName).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList(); 51 } 52 else 53 { 54 return db.Set<T>().Where(exp).OrderByDescending(orderName).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList(); 55 } 56 } 57 58 } 59 /// <summary> 60 /// 根據條件查詢滿足條件的一個entites 61 /// </summary> 62 /// <param name="exp">lambda查詢條件where</param> 63 /// <returns></returns> 64 public virtual T GetEntity(Func<T, bool> exp) 65 { 66 using (Entities db = new Entities()) 67 { 68 return db.Set<T>().Where(exp).SingleOrDefault(); 69 } 70 } 71 #endregion 72 73 #region 增改刪實現 74 /// <summary> 75 /// 插入Entity 76 /// </summary> 77 /// <param name="model"></param> 78 /// <returns></returns> 79 public virtual bool Insert(T entity) 80 { 81 using (Entities db = new Entities()) 82 { 83 var obj = db.Set<T>(); 84 obj.Add(entity); 85 return db.SaveChanges() > 0; 86 87 } 88 89 } 90 /// <summary> 91 /// 更新Entity(注意這裡使用的傻瓜式更新,可能效能略低) 92 /// </summary> 93 /// <param name="model"></param> 94 /// <returns></returns> 95 public virtual bool Update(T entity) 96 { 97 using (Entities db = new Entities()) 98 { 99 var obj = db.Set<T>(); 100 obj.Attach(entity); 101 db.Entry(entity).State = System.Data.EntityState.Modified; 102 return db.SaveChanges() > 0; 103 } 104 105 106 } 107 /// <summary> 108 /// 刪除Entity 109 /// </summary> 110 /// <param name="entity"></param> 111 /// <returns></returns> 112 public virtual bool Delete(T entity) 113 { 114 using (Entities db = new Entities()) 115 { 116 var obj = db.Set<T>(); 117 if (entity != null) 118 { 119 obj.Attach(entity); 120 db.Entry(entity).State = System.Data.EntityState.Deleted; 121 obj.Remove(entity); 122 return db.SaveChanges() > 0; 123 } 124 return false; 125 } 126 127 } 128 #endregion 129 } 130 }