DbContext General Data Warehousing class

Source: Internet
Author: User

<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///&LT;/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&LT;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&lt ; Func<t, bool>> where, orderparam[] orderparams, int number) {var _list = Dbcontext.set<t&gt ;().            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 &lt ;/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&gt        ; <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&LT;FUNC&LT;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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.