日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EntityFreamWork 项目总结

發布時間:2025/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EntityFreamWork 项目总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  前段時間一直在忙著處理一個B2C的商城項目,未來得整理這次項目的心得,今天偶有空閑便寫下這篇文章以記錄整個項目的設計及自我總結。

這個項目是我綜合傳智播客教學基礎將傳統三層架構與EntityFramework進行整合,其中如有不對之處,還望各位高手指點。

   一、項目結構:經典三層+EF?

  首先,先說說整個項目的結構。該項目使用 Visual Studio2013+EF4.4 來進行開發,可能有同學會說,EF6都出來了,為什么還使用4.4版本?

原因一、.net4.0只支持到4.4版本,
    原因二、windows?2003?只支持到?.net?4.0? 該項目整體結構如圖所示,

    

  API:主要用于支持第三方擴展,比如支付和登錄。

  BLL層:業務邏輯處理層。

  Common:公用方法封裝。

  DAL層:數據訪問層。

  DBSessionFactory:數據訪問會話層,主要用于DAL和數據庫之間的連接。

  DBUtility:常規三層中ADO.Net 方式與數據庫的連接。

  Interface:封裝了BLL調用DAL中的IBLL接口,及DAL中方法調用DBSession時其中的基本的CURD的方法的接口。

  Web.UI:表現層與業務邏輯層之間調用方法的封裝。

  Web:表現層。數據來源于UI及BLL層中。

?

  二、數據庫主要結構  

  
  主要表結構設計為:訂單模塊、會員模塊、商品模塊、文章模塊、后臺管理模塊和其他一些表的設計。

?

?

  三、各個模塊的功能介紹

    1.DBSessionFactory模塊。

      

    DBsession主要用于數據庫的交互,進行保存數據或者查詢數據。

  

1    /// <summary> 2 /// 封裝的數據操作類 3 /// </summary> 4 public partial class DBSession 5 { 6 /// <summary> 7 /// EF上下文對象,由工廠創建 8 /// </summary> 9 DbContext dbContext=TDB2C.DbContextFacory.DbContextFactory.GetDbContext(); 10 /// <summary> 11 /// 執行特殊SQL語句或存儲過程 12 /// </summary> 13 /// <param name="sql">Sql語句或存儲過程</param> 14 /// <param name="parameters">參數數組</param> 15 /// <returns>返回影響行數</returns> 16 public int ExecutNoneQuery(string sql, SqlParameter[] parameters) 17 { 18 return dbContext.Database.ExecuteSqlCommand(sql, parameters); 19 } 20 /// <summary> 21 /// 執行SQL語句,返回指定類型的對象集合 22 /// </summary> 23 /// <typeparam name="T"></typeparam> 24 /// <param name="sql"></param> 25 /// <param name="parameters"></param> 26 /// <returns></returns> 27 public List<T> ExecutDataTable<T>(string sql, SqlParameter[] parameters) 28 { 29 return dbContext.Database.SqlQuery<T>(sql, parameters).ToList(); 30 } 31 /// <summary> 32 /// 將所有操作一次性保存會數據庫,避免頻繁連接和操作數據庫 33 /// </summary> 34 /// <returns></returns> 35 public int SaveChanges() 36 { 37 try 38 { 39 return dbContext.SaveChanges(); 40 } 41 catch(Exception ex) 42 { 43 TDB2C.Common.LogHelper.LogFatal(ex.Message, ex); 44 throw ex; 45 } 46 } 47 }

    AbstructFacotry.tt 主要用于反射出 DAL對象與DBSession層之間的 IDAL 對象。

  2.Interface中兩個接口。

  IDAL 接口: 將數據庫中的常用方法進行抽象。具體實現交給DAL層來完成。

1 public interface IBaseDAL<T> where T:class,new() 2 { 3 /// <summary> 4 /// 根據條件,獲取當個對象,帶排序 5 /// </summary> 6 T LoadEntity(Expression<Func<T, bool>> whereLambda, params OrderModelField[] orderByExpression); 7 /// <summary> 8 /// 獲取滿足條件的所有數據 9 /// </summary> 10 IQueryable<T> LoadEntities(Expression<Func<T, bool>> whereLambda, params OrderModelField[] orderByExpression); 11 /// <summary> 12 /// 獲取前幾條數據,根據條件,排序條件,數量 13 /// </summary> 14 IQueryable<T> LoadEntities(int top, Expression<Func<T, bool>> whereLambda, params OrderModelField[] orderByExpression); 15 /// <summary> 16 /// 獲取分頁數據,根據過濾條件,排序條件,頁碼,頁容量, 17 /// </summary> 18 IQueryable<T> LoadEntities(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> whereLambda, params OrderModelField[] orderByExpression); 19 /// <summary> 20 /// 增加新實體 21 /// </summary> 22 T AddEntity(T entity); 23 /// <summary> 24 /// 刪除該實體 25 /// </summary> 26 void DeleteEntity(T entity); 27 /// <summary> 28 /// 修改實體 29 /// </summary> 30 void UpdateEntity(T entity); 31 32 #region 聚合函數 33 /// <summary> 34 /// 統計合計,若統計字段中包含null值,則不計入運算結果 35 /// </summary> 36 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 37 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 38 /// <returns>返回合計值</returns> 39 int? GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 40 /// <summary> 41 /// 統計合計,若統計字段中包含null值,則不計入運算結果 42 /// </summary> 43 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 44 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 45 /// <returns>返回合計值</returns> 46 decimal? GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 47 /// <summary> 48 /// 獲得最大值,若統計字段中包含null值,則不計入運算結果 49 /// </summary> 50 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 51 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 52 /// <returns>返回最大值</returns> 53 int? GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 54 /// <summary> 55 /// 獲得最大值,若統計字段中包含null值,則不計入運算結果 56 /// </summary> 57 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 58 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 59 /// <returns>返回最大值</returns> 60 decimal? GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 61 /// <summary> 62 /// 獲得最小值,若統計字段中包含null值,則不計入運算結果 63 /// </summary> 64 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 65 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 66 /// <returns>返回最小值</returns> 67 int? GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 68 /// <summary> 69 /// 獲得最小值,若統計字段中包含null值,則不計入運算結果 70 /// </summary> 71 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 72 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 73 /// <returns>返回最小值</returns> 74 decimal? GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 75 /// <summary> 76 /// 獲得平均值,若統計字段中包含null值,則不計入運算結果 77 /// </summary> 78 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 79 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 80 /// <returns>返回平均值</returns> 81 int? GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 82 /// <summary> 83 /// 獲得平均值,若統計字段中包含null值,則不計入運算結果 84 /// </summary> 85 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 86 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 87 /// <returns>返回平均值</returns> 88 decimal? GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 89 90 91 92 /// <summary> 93 /// 統計合計,若統計字段中包含null值,則拋異常 94 /// </summary> 95 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 96 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 97 /// <returns>返回合計值</returns> 98 int GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 99 /// <summary> 100 /// 統計合計,若統計字段中包含null值,則拋異常 101 /// </summary> 102 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 103 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 104 /// <returns>返回合計值</returns> 105 decimal GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 106 /// <summary> 107 /// 獲得最大值,若統計字段中包含null值,則拋異常 108 /// </summary> 109 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 110 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 111 /// <returns>返回最大值</returns> 112 int GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 113 /// <summary> 114 /// 獲得最大值,若統計字段中包含null值,則拋異常 115 /// </summary> 116 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 117 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 118 /// <returns>返回最大值</returns> 119 decimal GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 120 /// <summary> 121 /// 獲得最小值,若統計字段中包含null值,則拋異常 122 /// </summary> 123 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 124 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 125 /// <returns>返回最小值</returns> 126 int GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 127 /// <summary> 128 /// 獲得最小值,若統計字段中包含null值,則拋異常 129 /// </summary> 130 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 131 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 132 /// <returns>返回最小值</returns> 133 decimal GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 134 /// <summary> 135 /// 獲得平均值,若統計字段中包含null值,則拋異常 136 /// </summary> 137 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 138 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 139 /// <returns>返回平均值</returns> 140 int GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 141 /// <summary> 142 /// 獲得平均值,若統計字段中包含null值,則拋異常 143 /// </summary> 144 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 145 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 146 /// <returns>返回平均值</returns> 147 decimal GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 148 149 150 151 152 /// <summary> 153 /// 獲得指定條件統計結果 154 /// </summary> 155 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 156 /// <returns></returns> 157 int GetCount(Expression<Func<T, bool>> whereLambda); 158 159 #endregion 160 161 /// <summary> 162 /// 查找是否存在 163 /// </summary> 164 bool ExistsEntity(Expression<Func<T, bool>> whereLabmda); 165 /// <summary> 166 /// 查找是否存在 167 /// </summary> 168 bool ExistsEntity(int id); 169 } View Code

?

  IBLL接口: 將IDAL中的方法進行擴充,然后交給BLL中去具體實現。

1 /// <summary> 2 /// 業務邏輯接口層(Business Logic Layer InterFace),供表現層和業務邏輯層使用 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 public interface IBaseBLL<T> where T:class,new() 6 { 7 8 /// <summary> 9 /// 獲取指定對象,根據主鍵Id 10 /// </summary> 11 /// <param name="id">主鍵</param> 12 /// <returns>獲取到的對象,不存在則為Null</returns> 13 T LoadEntity(int id); 14 /// <summary> 15 /// 獲取指定對象,根據過濾條件字符串 16 /// </summary> 17 /// <param name="strWhere">過濾條件 where條件字符串</param> 18 /// <returns>獲取到的對象,不存在則為Null</returns> 19 T LoadEntity(string strWhere); 20 /// <summary> 21 /// 獲取指定對象,根據過濾條件字符串,帶排序 22 /// </summary> 23 /// <param name="strWhere">過濾條件 where條件字符串</param> 24 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 25 /// <returns>獲取到的對象,不存在則為Null</returns> 26 T LoadEntity(string strWhere, string fieldOrder); 27 /// <summary> 28 /// 獲取指定對象,根據過濾條件Lambda表達式 29 /// </summary> 30 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 31 /// <returns>獲取到的對象,不存在則為Null</returns> 32 T LoadEntity(Expression<Func<T, bool>> whereLambda); 33 /// <summary> 34 /// 獲取指定對象,根據過濾條件Lambda表達式,帶排序 35 /// </summary> 36 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 37 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 38 /// <returns>獲取到的對象,不存在則為Null</returns> 39 T LoadEntity(Expression<Func<T, bool>> whereLambda, string fieldOrder); 40 41 /// <summary> 42 /// 獲取對象集合,根據過濾條件字符串 43 /// </summary> 44 /// <param name="strWhere">過濾條件 where條件字符串</param> 45 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 46 List<T> LoadEntities(string strWhere); 47 /// <summary> 48 /// 獲取對象集合,根據過濾條件字符串,帶排序 49 /// </summary> 50 /// <param name="strWhere">過濾條件 where條件字符串</param> 51 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 52 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 53 List<T> LoadEntities(string strWhere, string fieldOrder); 54 55 /// <summary> 56 /// 獲取對象集合,根據過濾條件Lambda表達式 57 /// </summary> 58 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 59 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 60 List<T> LoadEntities(Expression<Func<T, bool>> whereLambda); 61 /// <summary> 62 /// 獲取對象集合,根據過濾條件Lambda表達式,帶排序 63 /// </summary> 64 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 65 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 66 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 67 List<T> LoadEntities(Expression<Func<T, bool>> whereLambda, string fieldOrder); 68 69 /// <summary> 70 /// 獲取前幾條對象集合,根據過濾條件字符串 71 /// </summary> 72 /// <param name="top">指定記錄數</param> 73 /// <param name="strWhere">過濾條件 where條件字符串</param> 74 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 75 List<T> LoadEntities(int top, string strWhere); 76 /// <summary> 77 /// 獲取前幾條對象集合,根據過濾條件字符串,帶排序 78 /// </summary> 79 /// <param name="top">指定記錄數</param> 80 /// <param name="strWhere">過濾條件 where條件字符串</param> 81 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 82 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 83 List<T> LoadEntities(int top, string strWhere, string fieldOrder); 84 85 /// <summary> 86 /// 獲取前幾條對象集合,根據過濾條件Lambda表達式 87 /// </summary> 88 /// <param name="top">指定記錄數</param> 89 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 90 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 91 List<T> LoadEntities(int top, Expression<Func<T, bool>> whereLambda); 92 /// <summary> 93 /// 獲取前幾條對象集合,根據過濾條件Lambda表達式,帶排序 94 /// </summary> 95 /// <param name="top">指定記錄數</param> 96 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 97 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 98 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 99 List<T> LoadEntities(int top, Expression<Func<T, bool>> whereLambda, string fieldOrder); 100 101 /// <summary> 102 /// 獲取分頁對象集合,根據過濾條件字符串 103 /// </summary> 104 /// <param name="pageIndex">當前頁碼</param> 105 /// <param name="pageSize">頁容量</param> 106 /// <param name="totalCount">總記錄數</param> 107 /// <param name="strWhere">過濾條件 where條件字符串</param> 108 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 109 List<T> LoadEntities(int pageIndex, int pageSize, out int totalCount, string strWhere); 110 /// <summary> 111 /// 獲取分頁對象集合,根據過濾條件字符串,帶排序 112 /// </summary> 113 /// <param name="pageIndex">當前頁碼</param> 114 /// <param name="pageSize">頁容量</param> 115 /// <param name="totalCount">總記錄數</param> 116 /// <param name="strWhere">過濾條件 where條件字符串</param> 117 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 118 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 119 List<T> LoadEntities(int pageIndex, int pageSize, out int totalCount, string strWhere, string fieldOrder); 120 121 /// <summary> 122 /// 獲取分頁對象集合,根據過濾條件Lambda表達式 123 /// </summary> 124 /// <param name="pageIndex">當前頁碼</param> 125 /// <param name="pageSize">頁容量</param> 126 /// <param name="totalCount">總記錄數</param> 127 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 128 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 129 List<T> LoadEntities(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> whereLambda); 130 /// <summary> 131 /// 獲取分頁對象集合,根據過濾條件Lambda表達式,帶排序 132 /// </summary> 133 /// <param name="pageIndex">當前頁碼</param> 134 /// <param name="pageSize">頁容量</param> 135 /// <param name="totalCount">總記錄數</param> 136 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 137 /// <param name="fieldOrder">排序字符串 格式為:"id desc" 或者 "sort_id asc,add_time desc,....,id asc" 或者""</param> 138 /// <returns>獲取到的對象集合,不存在則為new List()</returns> 139 List<T> LoadEntities(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> whereLambda, string fieldOrder); 140 141 142 /// <summary> 143 /// 添加新實體,返回剛添加的實體 144 /// </summary> 145 /// <param name="entity">要添加的實體</param> 146 /// <returns>返回的添加成功后的實體</returns> 147 T AddEntity(T entity); 148 /// <summary> 149 /// 添加實體,返回添加成功的實體及成功數量 150 /// </summary> 151 /// <param name="entity">要添加的實體</param> 152 /// <param name="changes">成功記錄數</param> 153 /// <returns>返回添加成功后的實體</returns> 154 T AddEntity(T entity, out int changes); 155 /// <summary> 156 /// 添加實體,返回添加成功的數量 157 /// </summary> 158 /// <param name="entity">要添加的實體</param> 159 /// <returns>添加成功的數量</returns> 160 int AddEntityChanges(T entity); 161 162 /// <summary> 163 /// 更新實體,返回是否成功 164 /// </summary> 165 /// <param name="entity">要更新的實體</param> 166 /// <returns>成功狀態 true為成功,false為失敗</returns> 167 bool UpdateEntity(T entity); 168 169 /// <summary> 170 /// 查找是否存在 171 /// </summary> 172 /// <param name="whereLabmda">過濾條件 Lambda表達式</param> 173 /// <returns>存在狀態 true為存在,false為不存在</returns> 174 bool ExistsEntity(Expression<Func<T, bool>> whereLabmda); 175 /// <summary> 176 /// 查找是否存在 177 /// </summary> 178 /// <param name="strWhere">過濾條件 where條件字符串</param> 179 /// <returns>存在狀態 true為存在,false為不存在</returns> 180 bool ExistsEntity(string strWhere); 181 /// <summary> 182 /// 查找是否存在 183 /// </summary> 184 /// <param name="id">對象主鍵Id</param> 185 /// <returns>存在狀態 true為存在,false為不存在</returns> 186 bool ExistsEntity(int id); 187 188 /// <summary> 189 /// 修改指定對象的(一個或多個)字段值 190 /// </summary> 191 /// <param name="id">主鍵Id</param> 192 /// <param name="strValue">字段值,格式必須為"key=value"或"key1=value1&&key2=value2&&...&&keyN=valueN"</param> 193 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 194 bool UpdateFieldsEntity(int id, string strValue); 195 /// <summary> 196 /// 修改滿足條件的所有對象的(一個或多個)字段值 197 /// </summary> 198 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 199 /// <param name="strValue">字段值,格式必須為"key=value"或"key1=value1&&key2=value2&&...&&keyN=valueN"</param> 200 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 201 bool UpdateFieldsEntity(Expression<Func<T, bool>> whereLambda, string strValue); 202 /// <summary> 203 /// 根據條件,修改滿足條件的所以的對象的(一個或多個)字段值 204 /// </summary> 205 /// <param name="strWhere">過濾條件 where條件字符串</param> 206 /// <param name="strValue">字段值,格式必須為"key=value"或"key1=value1&&key2=value2&&...&&keyN=valueN"</param> 207 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 208 bool UpdateFieldsEntity(string strWhere, string strValue); 209 210 /// <summary> 211 /// 軟刪除實體 212 /// </summary> 213 /// <param name="id">主鍵Id</param> 214 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 215 bool DeleteSoftEntity(int id); 216 /// <summary> 217 /// 軟刪除實體,刪除滿足Lambda條件的實體對象 218 /// </summary> 219 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 220 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 221 bool DeleteSoftEntity(Expression<Func<T, bool>> whereLambda); 222 /// <summary> 223 /// 軟刪除實體,刪除滿足條件的實體對象 224 /// </summary> 225 /// <param name="strWhere">過濾條件 where條件字符串</param> 226 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 227 bool DeleteSoftEntity(string strWhere); 228 229 /// <summary> 230 /// 真刪除實體 231 /// </summary> 232 /// <param name="id">主鍵Id</param> 233 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 234 bool DeleteEntity(int id); 235 /// <summary> 236 /// 真刪除實體,刪除滿足Lambda條件的實體對象 237 /// </summary> 238 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 239 /// <returns>返回成功狀態 true為成功,false為失敗</returns> 240 bool DeleteEntity(Expression<Func<T, bool>> whereLambda); 241 /// <summary> 242 /// 真刪除實體,返回是否成功 243 /// </summary> 244 /// <param name="entity">要刪除的實體</param> 245 /// <returns>成功狀態 true為成功,false為失敗</returns> 246 bool DeleteEntity(T entity); 247 /// <summary> 248 /// 真刪除實體,返回是否成功 249 /// </summary> 250 /// <param name="strWhere">過濾條件 where條件字符串</param> 251 /// <returns>成功狀態 true為成功,false為失敗</returns> 252 bool DeleteEntity(string strWhere); 253 #region 聚合函數 254 255 /// <summary> 256 /// 統計合計,若統計字段中包含null值,則不計入運算結果 257 /// </summary> 258 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 259 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 260 /// <returns>返回合計值</returns> 261 int? GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 262 /// <summary> 263 /// 統計合計,若統計字段中包含null值,則不計入運算結果 264 /// </summary> 265 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 266 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 267 /// <returns>返回合計值</returns> 268 decimal? GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 269 /// <summary> 270 /// 獲得最大值,若統計字段中包含null值,則不計入運算結果 271 /// </summary> 272 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 273 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 274 /// <returns>返回最大值</returns> 275 int? GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 276 /// <summary> 277 /// 獲得最大值,若統計字段中包含null值,則不計入運算結果 278 /// </summary> 279 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 280 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 281 /// <returns>返回最大值</returns> 282 decimal? GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 283 /// <summary> 284 /// 獲得最小值,若統計字段中包含null值,則不計入運算結果 285 /// </summary> 286 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 287 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 288 /// <returns>返回最小值</returns> 289 int? GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 290 /// <summary> 291 /// 獲得最小值,若統計字段中包含null值,則不計入運算結果 292 /// </summary> 293 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 294 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 295 /// <returns>返回最小值</returns> 296 decimal? GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 297 /// <summary> 298 /// 獲得平均值,若統計字段中包含null值,則不計入運算結果 299 /// </summary> 300 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 301 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 302 /// <returns>返回平均值</returns> 303 int? GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int?>> fieldLambda); 304 /// <summary> 305 /// 獲得平均值,若統計字段中包含null值,則不計入運算結果 306 /// </summary> 307 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 308 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 309 /// <returns>返回平均值</returns> 310 decimal? GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal?>> fieldLambda); 311 312 313 /// <summary> 314 /// 統計合計,若統計字段中包含null值,則拋異常 315 /// </summary> 316 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 317 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 318 /// <returns>返回合計值</returns> 319 int GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 320 /// <summary> 321 /// 統計合計,若統計字段中包含null值,則拋異常 322 /// </summary> 323 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 324 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 325 /// <returns>返回合計值</returns> 326 decimal GetSum(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 327 /// <summary> 328 /// 獲得最大值,若統計字段中包含null值,則拋異常 329 /// </summary> 330 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 331 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 332 /// <returns>返回最大值</returns> 333 int GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 334 /// <summary> 335 /// 獲得最大值,若統計字段中包含null值,則拋異常 336 /// </summary> 337 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 338 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 339 /// <returns>返回最大值</returns> 340 decimal GetMax(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 341 /// <summary> 342 /// 獲得最小值,若統計字段中包含null值,則拋異常 343 /// </summary> 344 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 345 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 346 /// <returns>返回最小值</returns> 347 int GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 348 /// <summary> 349 /// 獲得最小值,若統計字段中包含null值,則拋異常 350 /// </summary> 351 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 352 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 353 /// <returns>返回最小值</returns> 354 decimal GetMin(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 355 /// <summary> 356 /// 獲得平均值,若統計字段中包含null值,則拋異常 357 /// </summary> 358 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 359 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 360 /// <returns>返回平均值</returns> 361 int GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, int>> fieldLambda); 362 /// <summary> 363 /// 獲得平均值,若統計字段中包含null值,則拋異常 364 /// </summary> 365 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 366 /// <param name="fieldLambda">選擇字段的 Lambda表達式</param> 367 /// <returns>返回平均值</returns> 368 decimal GetAverage(Expression<Func<T, bool>> whereLambda, Expression<Func<T, decimal>> fieldLambda); 369 /// <summary> 370 /// 根據條件獲得記錄數 371 /// </summary> 372 /// <param name="whereLambda">過濾條件 Lambda表達式</param> 373 /// <returns>記錄數</returns> 374 int GetCount(Expression<Func<T, bool>> whereLambda); 375 /// <summary> 376 /// 根據條件獲得記錄數 377 /// </summary> 378 /// <param name="strWhere">過濾條件 where字符串</param> 379 /// <returns>記錄數</returns> 380 int GetCount(string strWhere); 381 #endregion 382 } View Code

  

  3.DAL層

  

  DAL層中,定義了泛型約束的基類,所有的Model 繼承BaseDAL,里面顯示實現了所有的IDAL,具體實現就不貼出來了。

1 public class BaseDAL<T> where T:class,new() 2 { 3   //代碼的具體實現... 4 }

  4.同樣的BLL層中 也是定義相同的泛型約束基類,所有的Model繼承BaseBLL,顯示實現所有IBLL中定義的方法。

?

1 public class BaseBLL<T> where T:class,new() 2 { 3  //代碼的具體實現... 4 }

  

  四、總結

  這次的項目EntityFrameWork的使用方式依然是 DBFirst模式,在數據庫中建立表結構之后,生成對應的Model,這里我將原始的T4文件進行了修改,支持將數據庫中表名稱,字段備注說明,一并生成到Model中,如:

1 /// <summary> 2 /// 商品評論參數 標簽表 3 /// </summary> 4 [Serializable] 5 public partial class Product_comment_merit:IModel 6 { 7 public Product_comment_merit() 8 { 9 this.Id=0; 10 this.Product_category_ids=""; 11 this.Title=""; 12 this.Sort_id=0; 13 this.Add_time=DateTime.Now; 14 this.Is_del=0; 15 } 16 17 /// <summary> 18 /// 主鍵Id 19 /// </summary> 20 public int Id { get; set; } 21 /// <summary> 22 /// 所屬分類 23 /// </summary> 24 public string Product_category_ids { get; set; } 25 /// <summary> 26 /// 標題 27 /// </summary> 28 public string Title { get; set; } 29 /// <summary> 30 /// 排序 31 /// </summary> 32 public int Sort_id { get; set; } 33 /// <summary> 34 /// 添加時間 35 /// </summary> 36 public DateTime Add_time { get; set; } 37 /// <summary> 38 /// 刪除標識 39 /// </summary> 40 public int Is_del { get; set; } 41 }

  model.tt文件,將數據庫中的關系,映射成C#中的model,并保留字段備注,表說明。

  所有BLL中的類,都繼承了BaseBLL,所以每一個業務邏輯都有IBLL中的 52個方法,這些方法基本涵蓋了所有常規的數據操作。

  自己所特有的業務邏輯在單獨編寫,因為T4模版生成出來的Class 都是partial 的。

  整體實現的功能為, 新建立某個關系模型,重新運行T4模版文件,則 就擁有了該對象的 IBLL中的 52個常用 CRUD的方法。

?

轉載于:https://www.cnblogs.com/sandunban/p/5223334.html

總結

以上是生活随笔為你收集整理的EntityFreamWork 项目总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。