校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET MVC5網站開發之實現數據存儲層功能(三)

ASP.NET MVC5網站開發之實現數據存儲層功能(三)

熱門標簽:地圖標注位置怎么弄圖 電銷專用外呼線路 電銷外呼系統是違法的嗎 廣西房產智能外呼系統推薦 威力最大的電銷機器人 400電話唐山辦理 電話機器人鑰匙扣 漯河外呼調研線路 旅游地圖標注線路

數據存儲層在項目Ninesky.DataLibrary中實現,整個項目只有一個類Repository。

Repository中實現增刪改查詢等方法供業務邏輯層調用,主要功能如下圖:

具體步驟

一、添加實體框架的引用

1、打開解決方案,選擇項目Ninesky.DataLibrary,在引用上右鍵,選擇管理NuGet程序包。

在NuGet包管理器中的瀏覽標簽中點擊EntityFramework,點擊右側欄的安裝按鈕。

在搜索框輸入EntityFramework.zh-Hans,安裝假體中文資源包。

二、實現數據倉儲類

打開解決方案,選擇項目Ninesky.DataLibrary,將Class1.cs重命名為Repository.cs,在文檔頭添加using System.Data.Entity;將類名重命名為public class Repository。改為public class RepositoryT> where T :class

1、DbContext屬性

在Repository類中添加如下代碼 public DbContext DbContext { get; set; }

2、構造函數

為類中添加夠高函數,可以直接傳遞DbContex。

public Repository()
    { }
    public Repository(DbContext dbContext)
    {
      DbContext = dbContext;
    } 

3、查找實體方法Find

Find有一個重載。兩個方法分別可以根據ID和根據lamdba表達式查找實體。

/// summary>
    /// 查找實體
    /// /summary>
    /// param name="ID">實體主鍵值/param>
    /// returns>/returns>
    public T Find(int ID)
    {
      return DbContext.SetT>().Find(ID);
    }

    /// summary>
    /// 查找實體
    /// /summary>
    /// param name="where">查詢Lambda表達式/param>
    /// returns>/returns>
    public T Find(ExpressionFuncT,bool>> where)
    {
      return DbContext.SetT>().SingleOrDefault(where);
    }

4、查找實體列表方法FindList

根據需要FindList進行多次重載

/// summary>
    /// 查找實體列表
    /// /summary>
    /// returns>/returns>
    public IQueryableT> FindList()
    {
      return DbContext.SetT>();
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// typeparam name="TKey">排序建類型/typeparam>
    /// param name="order">排序表達式/param>
    /// param name="asc">是否正序/param>
    /// returns>/returns>
    public IQueryableT> FindListTKey>(ExpressionFuncT, TKey>> order, bool asc)
    {
      return asc ? DbContext.SetT>().OrderBy(order) : DbContext.SetT>().OrderByDescending(order);
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// typeparam name="TKey">排序鍵類型/typeparam>
    /// param name="order">排序鍵/param>
    /// param name="asc">是否正序/param>
    /// param name="number">獲取的記錄數量/param>
    /// returns>/returns>
    public IQueryableT> FindListTKey>(ExpressionFuncT, TKey>> order, bool asc,int number)
    {
      return asc ? DbContext.SetT>().OrderBy(order).Take(number) : DbContext.SetT>().OrderByDescending(order).Take(number);
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// param name="where">查詢Lambda表達式/param>
    /// returns>/returns>
    public IQueryableT> FindList(ExpressionFuncT, bool>> where)
    {
      return DbContext.SetT>().Where(where);
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// param name="where">查詢Lambda表達式/param>
    /// param name="number">獲取的記錄數量/param>
    /// returns>/returns>
    public IQueryableT> FindList(ExpressionFuncT, bool>> where, int number)
    {
      return DbContext.SetT>().Where(where).Take(number);
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// typeparam name="TKey">排序鍵類型/typeparam>
    /// param name="where">查詢Lambda表達式/param>
    /// param name="order">排序鍵/param>
    /// param name="asc">是否正序/param>
    /// returns>/returns>
    public IQueryableT> FindListTKey>(ExpressionFuncT, bool>> where, ExpressionFuncT, TKey>> order, bool asc)
    {
      return asc ? DbContext.SetT>().Where(where).OrderBy(order) : DbContext.SetT>().Where(where).OrderByDescending(order);
    }

    /// summary>
    /// 查找實體列表
    /// /summary>
    /// typeparam name="TKey">排序鍵類型/typeparam>
    /// param name="where">查詢Lambda表達式/param>
    /// param name="order">排序鍵/param>
    /// param name="asc">是否正序/param>
    /// param name="number">獲取的記錄數量/param>
    /// returns>/returns>
    public IQueryableT> FindListTKey>(ExpressionFuncT, bool>> where, ExpressionFuncT, TKey>> order, bool asc, int number)
    {
      return asc ? DbContext.SetT>().Where(where).OrderBy(order).Take(number) : DbContext.SetT>().Where(where).OrderByDescending(order).Take(number);
    }

5、查找實體分頁列表方法FindPageList

根據需要FindPageList進行多次重載

/// summary>
    /// 查找分頁列表
    /// /summary>
    /// param name="pageSize">每頁記錄數。必須大于1/param>
    /// param name="pageIndex">頁碼。首頁從1開始,頁碼必須大于1/param>
    /// param name="totalNumber">總記錄數/param>
    /// returns>/returns>
    public IQueryableT> FindPageList(int pageSize, int pageIndex, out int totalNumber)
    {
      if (pageIndex  1) pageIndex = 1;
      if (pageSize  1) pageSize = 10;
      IQueryableT> _list = DbContext.SetT>();
      totalNumber = _list.Count();
      return _list.Skip((pageIndex - 1) * pageIndex).Take(pageSize);
    }

    /// summary>
    /// 查找分頁列表
    /// /summary>
    /// param name="pageSize">每頁記錄數。必須大于1/param>
    /// param name="pageIndex">頁碼。首頁從1開始,頁碼必須大于1/param>
    /// param name="totalNumber">總記錄數/param>
    /// param name="order">排序鍵/param>
    /// param name="asc">是否正序/param>
    /// returns>/returns>
    public IQueryableT> FindPageListTKey>(int pageSize, int pageIndex, out int totalNumber, ExpressionFuncT, TKey>> order, bool asc)
    {
      if (pageIndex  1) pageIndex = 1;
      if (pageSize  1) pageSize = 10;
      IQueryableT> _list = DbContext.SetT>();
      _list = asc ? _list.OrderBy(order) : _list.OrderByDescending(order);
      totalNumber = _list.Count();
      return _list.Skip((pageIndex - 1) * pageIndex).Take(pageSize);
    }

    /// summary>
    /// 查找分頁列表
    /// /summary>
    /// param name="pageSize">每頁記錄數。必須大于1/param>
    /// param name="pageIndex">頁碼。首頁從1開始,頁碼必須大于1/param>
    /// param name="totalNumber">總記錄數/param>
    /// param name="where">查詢表達式/param>
    public IQueryableT> FindPageList(int pageSize, int pageIndex, out int totalNumber, ExpressionFuncT, bool>> where)
    {
      if (pageIndex  1) pageIndex = 1;
      if (pageSize  1) pageSize = 10;
      IQueryableT> _list = DbContext.SetT>().Where(where);
      totalNumber = _list.Count();
      return _list.Skip((pageIndex - 1) * pageIndex).Take(pageSize);
    }

    /// summary>
    /// 查找分頁列表
    /// /summary>
    /// param name="pageSize">每頁記錄數。必須大于1/param>
    /// param name="pageIndex">頁碼。首頁從1開始,頁碼必須大于1/param>
    /// param name="totalNumber">總記錄數/param>
    /// param name="where">查詢表達式/param>
    /// param name="order">排序鍵/param>
    /// param name="asc">是否正序/param>
    public IQueryableT> FindPageListTKey>(int pageSize, int pageIndex, out int totalNumber, ExpressionFuncT, bool>> where, ExpressionFuncT, TKey>> order, bool asc)
    {
      if (pageIndex  1) pageIndex = 1;
      if (pageSize  1) pageSize = 10;
      IQueryableT> _list = DbContext.SetT>().Where(where);
      _list = asc ? _list.OrderBy(order) : _list.OrderByDescending(order);
      totalNumber = _list.Count();
      return _list.Skip((pageIndex - 1) * pageIndex).Take(pageSize);
    }

6、添加實體方法Add

Add 方法有一個重載,重載方法可以選擇是否立即保存

/// summary>
    /// 添加實體
    /// /summary>
    /// param name="entity">實體/param>
    /// returns>受影響的對象的數目/returns>
    public int Add(T entity)
    {
      return Add(entity, true);
    }

    /// summary>
    /// 添加實體
    /// /summary>
    /// param name="entity">實體/param>
    /// param name="isSave">是否立即保存/param>
    /// returns>在“isSave”為True時返回受影響的對象的數目,為False時直接返回0/returns>
    public int Add(T entity,bool isSave)
    {
      DbContext.SetT>().Add(entity);
      return isSave ? DbContext.SaveChanges() : 0;
    }

7、更新實體方法Update

Updae 方法有一個重載,重載方法可以選擇是否立即保存

#region Update

    /// summary>
    /// 更新實體【立即保存】
    /// /summary>
    /// param name="entity">實體/param>
    /// returns>在“isSave”為True時返回受影響的對象的數目,為False時直接返回0/returns>
    public int Update(T entity)
    {
      return Update(entity, true);
    }

    /// summary>
    /// 更新實體
    /// /summary>
    /// param name="entity">實體/param>
    /// param name="isSave">是否立即保存/param>
    /// returns>在“isSave”為True時返回受影響的對象的數目,為False時直接返回0/returns>
    public int Update(T entity, bool isSave)
    {
      DbContext.SetT>().Attach(entity);
      DbContext.EntryT>(entity).State = EntityState.Modified;
      return isSave ? DbContext.SaveChanges() : 0;
    }

8、刪除實體方法Delete

Delete 方法有兩個重載,一個是可以選擇否立即保存,另一個是批量刪除

/// summary>
    /// 刪除實體【立即保存】
    /// /summary>
    /// param name="entity">實體/param>
    /// returns>受影響的對象的數目/returns>
    public int Delete(T entity)
    {
      return Delete(entity, true);
    }

    /// summary>
    /// 刪除實體
    /// /summary>
    /// param name="entity">實體/param>
    /// param name="isSave">是否立即保存/param>
    /// returns>在“isSave”為True時返回受影響的對象的數目,為False時直接返回0/returns>
    public int Delete(T entity,bool isSave)
    {
      DbContext.SetT>().Remove(entity);
      return isSave ? DbContext.SaveChanges() : 0;
    }

    /// summary>
    /// 批量刪除實體
    /// /summary>
    /// param name="entities">實體集合/param>
    /// returns>受影響的對象的數目/returns>
    public int Delete(IEnumerableT> entities)
    {
      DbContext.SetT>().RemoveRange(entities);
      return DbContext.SaveChanges();
    }

9、統計記錄數方法Count

Count 方法有一個重載,可以根據表達式進行統計

/// summary>
    /// 記錄數
    /// /summary>
    /// returns>/returns>
    public int Count()
    {
      return DbContext.SetT>().Count();
    }

    /// summary>
    /// 記錄數
    /// /summary>
    /// param name="predicate">表達式/param>
    /// returns>/returns>
    public int Count(ExpressionFuncT, bool>> predicate)
    {
      return DbContext.SetT>().Count(predicate);
    }

10、是否存在

/// summary>
    /// 記錄是否存在
    /// /summary>
    /// param name="predicate">表達式/param>
    /// returns>/returns>
    public bool IsContains(ExpressionFuncT, bool>> predicate)
    {
      return Count(predicate) > 0;
    }

11、保存到數據庫

/// summary>
    /// 保存數據【在Add、Upate、Delete未立即保存的情況下使用】
    /// /summary>
    /// returns>受影響的記錄數/returns>
    public int Save()
    {
      return DbContext.SaveChanges();
    }

您可能感興趣的文章:
  • IIS7/IIS7.5/IIS8網站目錄執行權限設置方法(與IIS6不同)
  • Win2008 R2中IIS7.5配置完網站權限不足問題的解決方法
  • IIS PHP環境Temp文件夾的權限問題引起的網站故障
  • win2003 IIS虛擬主機網站防木馬、權限設置、安全配置整理
  • Apache Wind2003 配置網站目錄權限小結
  • ASP.NET MVC5網站開發之登錄、驗證和注銷管理員篇1(六)
  • vs2010制作簡單的asp.net網站
  • 如何對ASP.NET網站實現靜態化
  • ASP.NET MVC5網站開發管理列表、回復及刪除(十三)
  • MVC網站開發之權限管理篇

標簽:試駕邀約 綏化 湖北 湘西 銅陵 欽州 焦作 無錫

巨人網絡通訊聲明:本文標題《ASP.NET MVC5網站開發之實現數據存儲層功能(三)》,本文關鍵詞  ASP.NET,MVC5,網,站開,發之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC5網站開發之實現數據存儲層功能(三)》相關的同類信息!
  • 本頁收集關于ASP.NET MVC5網站開發之實現數據存儲層功能(三)的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国内国产精品久久| 国产在线精品一区二区不卡了| 日韩欧美成人午夜| 91精品国产91热久久久做人人| 91国内精品野花午夜精品| 国产999精品久久| 国产成人亚洲综合a∨婷婷| 国产成人精品亚洲777人妖| 国产福利91精品一区二区三区| 国产乱理伦片在线观看夜一区| 国产乱人伦偷精品视频不卡 | 99久久精品一区| 粉嫩13p一区二区三区| 成熟亚洲日本毛茸茸凸凹| www.在线欧美| 91九色02白丝porn| 7777精品伊人久久久大香线蕉的| 欧美美女一区二区在线观看| 欧美一区二区三区视频免费播放 | 色婷婷精品大视频在线蜜桃视频| 99久久精品免费看| 色综合久久天天| 欧美精品视频www在线观看| 日韩亚洲欧美成人一区| 国产欧美日本一区二区三区| 一区二区中文字幕在线| 久久噜噜亚洲综合| 亚洲在线视频一区| 看电影不卡的网站| 91亚洲精品久久久蜜桃| 欧美三级日韩在线| 久久久久久久久久看片| 亚洲综合一区二区| 国产在线不卡一卡二卡三卡四卡| 97超碰欧美中文字幕| 7777精品久久久大香线蕉| 国产欧美一区二区精品性色| 午夜精品一区在线观看| 国产成人在线看| 欧美综合久久久| wwwwxxxxx欧美| 一区二区三区精品在线| 国产一区高清在线| 欧美视频中文字幕| 国产精品网站在线| 免费在线观看精品| 欧美日韩一区二区在线观看| 国产夜色精品一区二区av| 亚洲国产裸拍裸体视频在线观看乱了 | 精品国产一区二区在线观看| 亚洲国产精品99久久久久久久久| 日韩电影在线免费观看| 色综合久久综合| 国产午夜精品一区二区三区四区| 青娱乐精品视频| 欧美亚洲动漫精品| 综合久久久久久| 成人午夜在线免费| 精品日韩在线观看| 亚洲一区二区在线免费观看视频| 韩国一区二区在线观看| 制服丝袜亚洲播放| 亚洲成国产人片在线观看| 91麻豆文化传媒在线观看| 国产欧美精品一区aⅴ影院| 另类中文字幕网| 欧美二区在线观看| 亚洲国产一区二区三区| 色女孩综合影院| 亚洲色图一区二区三区| 不卡av在线免费观看| 久久久久久久综合日本| 美女高潮久久久| 欧美变态凌虐bdsm| 蜜臀av一级做a爰片久久| 欧美猛男超大videosgay| 亚洲高清中文字幕| 欧美视频一区二区三区四区| 亚洲国产综合色| 欧美麻豆精品久久久久久| 七七婷婷婷婷精品国产| 精品处破学生在线二十三| 国内精品视频666| 国产偷国产偷亚洲高清人白洁| 激情欧美日韩一区二区| 久久亚洲精品国产精品紫薇| 国产很黄免费观看久久| 国产精品―色哟哟| 色网综合在线观看| 成人午夜在线视频| 日韩西西人体444www| 免费在线视频一区| 国产肉丝袜一区二区| 91免费视频大全| 丝袜诱惑亚洲看片| 精品国产乱码久久久久久影片| 午夜视频在线观看一区二区三区| 蜜桃久久久久久久| 粉嫩高潮美女一区二区三区| 亚洲小说欧美激情另类| 国产夫妻精品视频| 亚洲人成在线播放网站岛国 | 国产精品一二一区| 欧美国产激情二区三区| 色综合av在线| 久久99精品国产麻豆婷婷| 中文久久乱码一区二区| 欧美少妇bbb| 国产麻豆精品一区二区| 亚洲黄色片在线观看| 日韩精品自拍偷拍| 91蜜桃传媒精品久久久一区二区| 日韩精品欧美成人高清一区二区| 精品国产乱码久久久久久久| 91伊人久久大香线蕉| 久久er精品视频| 亚洲自拍偷拍av| 国产精品系列在线| 日韩精品中文字幕在线不卡尤物| 99精品在线免费| 美女性感视频久久| 亚洲欧美电影一区二区| 精品女同一区二区| 欧美日韩在线播放| 99在线精品免费| 国产精品99久久久| 看片的网站亚洲| 午夜精彩视频在线观看不卡| 国产精品不卡在线| 精品国精品自拍自在线| 欧美精品久久久久久久久老牛影院| 成人夜色视频网站在线观看| 紧缚奴在线一区二区三区| 午夜av区久久| 一区二区三区电影在线播| 国产精品美女久久久久aⅴ国产馆| 日韩三级免费观看| 欧美精品久久天天躁| 欧美日韩在线三级| 91国产精品成人| 99re成人在线| 91视频免费播放| 91亚洲精华国产精华精华液| 国产白丝精品91爽爽久久| 国产精品综合网| 国产一区不卡视频| 国产精品自拍网站| 懂色av一区二区夜夜嗨| 国产69精品久久99不卡| 国产自产视频一区二区三区 | 国产偷v国产偷v亚洲高清| 精品国内二区三区| 久久综合色婷婷| 欧美精品一区二区三区蜜桃| 26uuu亚洲| 久久精品综合网| 欧美国产亚洲另类动漫| 国产精品九色蝌蚪自拍| 亚洲精品欧美激情| 亚洲精品国产高清久久伦理二区| 亚洲精品一卡二卡| 亚洲动漫第一页| 青青草伊人久久| 激情小说欧美图片| 国产精品一二三在| av网站一区二区三区| 欧美综合天天夜夜久久| 欧美美女激情18p| 欧美电视剧免费观看| 欧美国产精品一区二区三区| 国产精品白丝在线| 亚洲国产精品麻豆| 蜜桃av噜噜一区二区三区小说| 黑人精品欧美一区二区蜜桃| 国产一区在线观看麻豆| 国产成人午夜精品影院观看视频| 国产一区二区精品久久| 91女人视频在线观看| 在线91免费看| 欧美国产欧美综合| 亚洲成年人网站在线观看| 国产中文字幕精品| 色婷婷av一区二区| 欧美成人精精品一区二区频| 国产精品嫩草影院com| 日韩福利电影在线| 国产不卡在线视频| 制服丝袜一区二区三区| 国产精品狼人久久影院观看方式| 亚洲电影一级片| 成人理论电影网| 日韩三级视频在线看| 亚洲天堂福利av| 免费一区二区视频| 色菇凉天天综合网| 国产丝袜欧美中文另类| 日韩中文字幕区一区有砖一区| 国产a级毛片一区| 日韩欧美一级在线播放| 一区二区三区四区国产精品|