<summary>///Data warehousing///</summary>/<typeparam name= "T" > Entity Model </typeparam> Public Class repository<t> where T:class {//<summary>///Data context//</summary> Public DbContext DbContext {get; set;} Public Repository () {}//<summary>//constructor////</summary>//<param Name= "DbContext" > Data context </param> public Repository (DbContext dbContext) {dbContext = DbC Ontext; }//Find entity #region Find//<summary>//Find entities///</summary>//< param name= "id" > Entity primary Key value </param>//<returns></returns> public T Find (int ID) { Return dbcontext.set<t> (). Find (ID); }///<summary>//Find entities///</summary>//<param name= "where" > Querying lambda Expressions & Lt;/param> <returns></returns> public T Find (expression<func<t, bool>> where) { Return dbcontext.set<t> (). Singleordefault (where); #endregion//Find entity List #region Findlist//<summary>//Find entity List///</S ummary>//<returns></returns> public iqueryable<t> findlist () {RET Urn dbcontext.set<t> (); }///<summary>//Find entity List///</summary>//<param name= "where" > Querying lambda representations Type </param>///<returns></returns> public iqueryable<t> findlist (EXPRESSION<FUNC&L T T, bool>> where) {return dbcontext.set<t> (). where (where); }///<summary>//Find entity List///</summary>//<param name= "where" > Querying lambda representations Type </param>//<param name= "number" > obtained record Count </param>//<returns></returns> public iqueryable<t> findlist (expression<func<t, BOOL >> where, int number) {return dbcontext.set<t> (). where (where). Take (number); }///<summary>//Find entity List///</summary>//<param name= "where" > Querying lambda representations Type </param>//<param name= "Orderparam" > Sort parameters </param>//<returns></returns> Public iqueryable<t> findlist (expression<func<t, bool>> where, Orderparam orderparam) { Return Findlist (where, Orderparam, 0); }///<summary>//Find entity List///</summary>//<param name= "where" > Querying lambda representations Type </param>//<param name= "Orderparam" > Sort parameters </param>//<param name= "Number" > Captured Records "0-not enabled" </param> Public iqueryable<t> findlist (expression<func<t, Bool>> Where, orderparam orderparam, int number) {orderparam[] _orderparams = null; if (Orderparam! = null) _orderparams = new orderparam[] {orderparam}; Return Findlist (where, _orderparams, number); }///<summary>//Find entity List///</summary>//<param name= "where" > Querying lambda representations Type </param>//<param name= "Orderparams" > Sort parameters </param>//<param name= "number" > records obtained Volume "0-not enabled" </param>//<returns></returns> public iqueryable<t> findlist (expression< ; Func<t, bool>> where, orderparam[] orderparams, int number) {var _list = Dbcontext.set<t> ;(). where (where); var _orderparames = Expression.parameter (typeof (T), "O"); if (orderparams! = null && orderparams.length > 0) {for (int i = 0; i < Orderpara Ms. Length; i++) { Gets the property by property name var _property = typeof (T). GetProperty (Orderparams[i]. PropertyName); Create an expression that accesses a property var _propertyaccess = Expression.makememberaccess (_orderparames, _property); var _orderbyexp = Expression.lambda (_propertyaccess, _orderparames); String _ordername = Orderparams[i]. Method = = Ordermethod.asc? "By": "OrderByDescending"; Methodcallexpression resultexp = Expression.call (typeof (Queryable), _ordername, new type[] {typeof (T), _property. PropertyType}, _list. Expression, Expression.quote (_orderbyexp)); _list = _list. Provider.createquery<t> (RESULTEXP); }} if (number > 0) _list = _list. Take (number); return _list; #endregion//Find entity page List #region Findpagelist///<summary>//Find page List// </summary>//<param name= "PAGesize "> Number of records per page. Must be greater than 1</param>//<param name= "PageIndex" > page number. Homepage starting from 1, page number must be greater than 1</param>//<param name= "Totalnumber" > Total records </param>//<returns></ Returns> public iqueryable<t> findpagelist (int pageSize, int. pageIndex, out int totalnumber) { Orderparam _orderparam = null; Return Findpagelist (PageSize, PageIndex, out Totalnumber, _orderparam); }///<summary>//Find pagination list///</summary>//<param name= "PageSize" > Number of records per page. Must be greater than 1</param>//<param name= "PageIndex" > page number. Homepage starting from 1, page number must be greater than 1</param>//<param name= "Totalnumber" > Total records </param>//<param name= "Orde R "> Sort key </param>//<param name=" ASC "> Positive order </param>//<returns></returns> Public iqueryable<t> findpagelist (int pageSize, int. pageIndex, out int totalnumber, Orderparam orderparam) {return findpagelist (pageSize, PageIndex, out Totalnumber, (T) = true, Orderparam); }///<summary>//Find pagination list///</summary>//<param name= "PageSize" > Number of records per page. Must be greater than 1</param>//<param name= "PageIndex" > page number. Homepage starting from 1, page number must be greater than 1</param>//<param name= "Totalnumber" > Total records </param>//<param name= "wher E "> Query expression </param> public iqueryable<t> findpagelist (int pageSize, int. pageIndex, out int totalnumber, Expression<func<t, bool>> where) {Orderparam _param = null; Return Findpagelist (PageSize, PageIndex, out Totalnumber, where, _param); }///<summary>//Find pagination list///</summary>//<param name= "PageSize" > Number of records per page. </param>//<param name= "PageIndex" > page number. Home starting from 1 </param>//<param name= "Totalnumber" > Total records </param>///<param name= "where" > Query expressions </param>//<param name= "Orderparam" > Sort "null-not set" </param> <returns></returns> public iqueryable<t> findpagelist (int pageSize, int. PageIndex, out int Totalnumber, Expression<func<t, bool>> where, Orderparam orderparam) {orderparam[] _orderPa Rams = null; if (Orderparam! = null) _orderparams = new orderparam[] {orderparam}; Return Findpagelist (PageSize, PageIndex, out Totalnumber, where, _orderparams); }///<summary>//Find pagination list///</summary>//<param name= "PageSize" > Number of records per page. </param>//<param name= "PageIndex" > page number. Home starting from 1 </param>//<param name= "Totalnumber" > Total records </param>//<param name= "where" > Query Expressions </param>///<param Name= "Orderparams" > Sort "null-not set" </param> public iqueryable<t> Findpagelist (int pageSize, int pageIndex, out int totalnumber, expression<func<t, bool>> where, orderparam[] orderparams) {if (PageIndex < 1) PageIndex = 1; if (PageSize < 1) pageSize = 10; iqueryable<t> _list = dbcontext.set<t> (). where (where); var _orderparames = Expression.parameter (typeof (T), "O"); if (orderparams! = null && orderparams.length > 0) {for (int i = 0; i < Orderpara Ms. Length; i++) {//Gets the property by property name var _property = typeof (T). GetProperty (Orderparams[i]. PropertyName); Create an expression that accesses a property var _propertyaccess = Expression.makememberaccess (_orderparames, _property); var _orderbyexp = Expression.lambda (_propertyaccess, _orderparames); String _ordername = Orderparams[i]. Method = = Ordermethod.asc? "By": "OrderByDescending"; Methodcallexpression resultexp = Expression.call (typeof (Queryable), _ordername, new type[] {typeof (T), _property. PropertyType}, _list. Expression, Expression.quote (_orderbyexp)); _list = _list. Provider.createquery<t> (RESULTEXP); }} totalnumber = _list. Count (); Return _list. Skip ((pageIndex-1) * pageSize). Take (pageSize); } #endregion//Add Entity #region Add//<summary>///Add Entity "save Now"//</summ ary>//<param Name= "entity" > Entities </param>//<returns> number of affected objects </returns> public int Add (T entity) {return Add (entity, true); }///<summary>//Add entities///</summary>//<param Name= "entity" > Entities </para m>//<param name= "Issave" > whether to save now </param>//<returns> the number of affected objects returned when "Issave" is true, FAL SE is returned directly to 0</returns> public int Add (T entity, bool Issave) {dbcontext.set<t> (). ADD (entity); Return Issave? Dbcontext.savechanges (): 0; } #endregion//Update Entity #region Update//<summary>//Updated entity "Save Now"//</s ummary>//<param Name= "entity" > Entities </param>//<returns> number of affected objects </returns> public int update (T entity) {return update (entity, true); }///<summary>//Update entities///</summary>/<param Name= "entity" > Entity </para m>//<param name= "Issave" > whether to save now </param>//<returns> the number of affected objects returned when "Issave" is true, FAL SE returns 0</returns> public int Update (T entity, bool Issave) {dbcontext.set<t> () directly. Attach (entity); Dbcontext.entry<t> (entity). state = entitystate.modified; Return Issave? Dbcontext.savechanges () : 0; } #endregion//delete #region Delete//<summary>//Delete entity "Save Now"//</sum mary>//<param Name= "entity" > Entities </param>//<returns> number of affected objects </returns> public int Delete (T entity) {return Delete (entity, true); }///<summary>//delete entities///</summary>/<param Name= "entity" > Entity </para m>//<param name= "Issave" > whether to save now </param>//<returns> the number of affected objects returned when "Issave" is true, FAL SE returns 0</returns> public int Delete (T entity, bool Issave) {dbcontext.set<t> () directly. Attach (entity); Dbcontext.entry<t> (entity). state = entitystate.deleted; Return Issave? Dbcontext.savechanges (): 0; }///<summary>///Bulk Delete entities///</summary>//<param Name= "entities" > Entity Collection < ;/param>// <returns> number of affected objects </returns> public int Delete (ienumerable<t> entities) {DBCO ntext. Set<t> (). RemoveRange (entities); return Dbcontext.savechanges (); } #endregion//Record Count #region count//<summary>////</summary> ; <returns></returns> public int Count () {return dbcontext.set<t> (). Count (); }///<summary>///record////</summary>//<param name= "predicate" > Expression </p aram>//<returns></returns> public int Count (expression<func<t, bool>> predicat e) {return dbcontext.set<t> (). Count (predicate); } #endregion///<summary>///////</summary>//<param name= "PR Edicate "> Expressions </param>//<returns></returns> public bool Iscontains (EXPRESSION<FUNC<T, bool>> predicate) {return Count (predicate) ; 0; }///<summary>///Save Data "Use if Add, Upate, delete is not saved immediately"///</summary>//<retu Rns> the number of records affected </returns> public int Save () {return dbcontext.savechanges (); } }
Orderparam Auxiliary class
<summary>////Sort parameters/// </summary> public class Orderparam { //<summary> ///property name/// </summary> public string PropertyName {get; set;} <summary>///// </summary> Public Ordermethod method {get; set;} } <summary>///// </summary> public enum Ordermethod { //<summary >//// </summary> ASC,//<summary>///reverse order// </summary> DESC }
If there is a similar please understand!
DbContext General Data Warehousing class