精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

曬曬我的通用數(shù)據(jù)訪問(wèn)層

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
筆者在從事多年數(shù)據(jù)庫(kù)項(xiàng)目編寫(xiě)之后,厭倦了機(jī)械化的代碼,不斷重構(gòu)出了屬于自己的代碼——自己的通用數(shù)據(jù)訪問(wèn)層。在這里與大家分享。

今天來(lái)曬曬我的通用數(shù)據(jù)訪問(wèn)層。

寫(xiě)了很多年的數(shù)據(jù)庫(kù)項(xiàng)目,數(shù)據(jù)訪問(wèn)嘛,一直是用業(yè)務(wù)實(shí)體+存儲(chǔ)過(guò)程的方式,因此經(jīng)常會(huì)寫(xiě)很多調(diào)用存儲(chǔ)過(guò)程的代碼。這些代碼用Ado.net如何寫(xiě),我想大家應(yīng)該都知道:創(chuàng)建Connection, 創(chuàng)建Command, 給命令參數(shù)一個(gè)一個(gè)賦值,然后調(diào)用,調(diào)用完成后,如果有輸出參數(shù),則要讀出來(lái),如果有結(jié)果集,則要將結(jié)果集轉(zhuǎn)換成自己的實(shí)體列表,這個(gè)過(guò)程也是非常機(jī)械化的??傊?,調(diào)用任何存儲(chǔ)過(guò)程都需要這樣一堆類似的代碼。

我是個(gè)喜歡最求完美的人,自然不喜歡每個(gè)項(xiàng)目都有這樣一堆機(jī)械代碼的存在,于是經(jīng)過(guò)不斷的重構(gòu)代碼,慢慢的就形成了自己的通用數(shù)據(jù)訪問(wèn)層。

我的通用數(shù)據(jù)訪問(wèn)層具有以下特點(diǎn)

  1. 可用于訪問(wèn)各種類型的數(shù)據(jù)庫(kù),讓您的應(yīng)用程序從特定的數(shù)據(jù)庫(kù)類型中解藕出來(lái),從而非常簡(jiǎn)單地就可以實(shí)現(xiàn)對(duì)多種數(shù)據(jù)庫(kù)的支持。
  2. 非常方便的調(diào)用存儲(chǔ)過(guò)程、將數(shù)據(jù)庫(kù)的結(jié)果轉(zhuǎn)成實(shí)體類型(或列表)、調(diào)用完成后自動(dòng)“回寫(xiě)”輸出參數(shù)到實(shí)體對(duì)象。 只需要一個(gè)調(diào)用便可實(shí)現(xiàn)這三個(gè)操作步驟。
  3. 數(shù)據(jù)訪問(wèn)層可以同時(shí)支持多種數(shù)據(jù)庫(kù)類型的多個(gè)連接。并可以在運(yùn)行時(shí)簡(jiǎn)單的切換。
  4. 數(shù)據(jù)訪問(wèn)層可以非常方便地實(shí)現(xiàn)類似“多帳套數(shù)據(jù)庫(kù)”的支持,即根據(jù)不同的客戶端請(qǐng)求來(lái)切換相應(yīng)的數(shù)據(jù)庫(kù)連接。
  5. 數(shù)據(jù)訪問(wèn)層同時(shí)提供簡(jiǎn)單或詳細(xì)的API,連接或事務(wù)可以自動(dòng)控制也可以由上層類來(lái)控制。總之就是讓您在享受簡(jiǎn)化的過(guò)程中擁有對(duì)細(xì)節(jié)的充分控制機(jī)會(huì)。
  6. 提供一個(gè)輔助(Profiler)工具,讓您可以隨時(shí)了解詳細(xì)的數(shù)據(jù)庫(kù)訪問(wèn)情況:打開(kāi)了多少次連接,每個(gè)連接執(zhí)行了哪些調(diào)用,以及調(diào)用的執(zhí)行時(shí)間,調(diào)用參數(shù)等等。

設(shè)計(jì)目標(biāo):調(diào)用存儲(chǔ)過(guò)程,不管輸入?yún)?shù)多么復(fù)雜,不管有多少輸出參數(shù),包含轉(zhuǎn)換一個(gè)結(jié)果集到實(shí)體列表,只需要一行C#代碼。

1. 示范代碼,簡(jiǎn)單地調(diào)用單個(gè)存儲(chǔ)過(guò)程

C#實(shí)體類型,成員與數(shù)據(jù)庫(kù)表對(duì)應(yīng),這里就不給出表結(jié)構(gòu)截圖了。

  1. /// <summary>  
  2. /// 表示一個(gè)商品對(duì)象的實(shí)體類  
  3. /// </summary>  
  4. public sealed class Product  
  5. {  
  6.     public int ProductID { getset; }  
  7.     public string ProductName { getset; }  
  8.     public int CategoryID { getset; }  
  9.     public string Unit { getset; }  
  10.     public decimal UnitPrice { getset; }  
  11.     public int Quantity { getset; }  
  12.  
  13.     // 僅當(dāng)加載詳細(xì)信息(單個(gè)實(shí)體)時(shí)才加載它。加載列表時(shí)忽略這個(gè)字段。  
  14.     [ItemField(OnlyLoadAll = true)]      
  15.     public string Remark { getset; }  

存儲(chǔ)過(guò)程-更新商品信息

  1. create procedure [dbo].[UpdateProduct](   
  2.     @ProductName nvarchar(50),   
  3.     @CategoryID int,   
  4.     @Unit nvarchar(10),   
  5.     @UnitPrice money,   
  6.     @Quantity int,   
  7.     @Remark nvarchar(max),   
  8.     @ProductID int 
  9. )   
  10. as 
  11. update Products   
  12. set ProductName = @ProductName,   
  13.     CategoryID = @CategoryID,   
  14.     Unit = @Unit,   
  15.     UnitPrice = @UnitPrice,   
  16.     Quantity = @Quantity,   
  17.     Remark = @Remark   
  18. where ProductID = @ProductID; 

C#調(diào)用代碼

  1. public bool UpdateProduct(Product product)  
  2. {  
  3.     return (FishBLLHelper.CallSpExecuteNonQuery("UpdateProduct", product) > 0);  

存儲(chǔ)過(guò)程-獲取商品列表,支持分頁(yè)

  1. create procedure [dbo].[GetProductByCategoryId](  
  2.     @CategoryID int,  
  3.     @PageIndex int = 0,  
  4.     @PageSize int = 20,  
  5.     @TotalRecords int output  
  6. )  
  7. as 
  8. begin  
  9.      
  10. declare @ResultTable table  
  11. (  
  12.     RowIndex int,  
  13.     ProductID int,  
  14.     ProductName nvarchar(50),  
  15.     CategoryID int,  
  16.     Unit nvarchar(10),  
  17.     UnitPrice money,  
  18.     Quantity int 
  19. );  
  20.      
  21. insert into @ResultTable  
  22. select row_number() over (order by ProductID asc) as RowIndex,  
  23.        p.ProductID, p.ProductName, p.CategoryID, p.Unit, p.UnitPrice, p.Quantity  
  24. from   Products as p  
  25. where CategoryID = @CategoryID;  
  26.        
  27. select  @TotalRecords = count(*) from  @ResultTable;  
  28.      
  29. select *  
  30. from   @ResultTable  
  31. where  RowIndex > (@PageSize * @PageIndex) and RowIndex <= (@PageSize * (@PageIndex+1));  
  32.      
  33. end; 

C#調(diào)用代碼

  1. public List<Product> GetProductByCategoryId(int categoryId, ref int pageIndex, int pageSize, out int recCount)  
  2. {  
  3.     return FishBLLHelper.CallSpGetDataItemListPaged<Product>("GetProductByCategoryId",  
  4.    ref pageIndex, pageSize, out recCount, categoryId);  
  5. }  

2. 示范代碼,以事務(wù)方式調(diào)用多個(gè)存儲(chǔ)過(guò)程

C#實(shí)體類型,成員與數(shù)據(jù)庫(kù)表對(duì)應(yīng),這里就不給出表結(jié)構(gòu)截圖了。

  1. public sealed class OrderItem  
  2. {  
  3.     public int OrderID { getset; }  
  4.     public int? CustomerID { getset; }  
  5.     public DateTime OrderDate { getset; }  
  6.     public decimal SumMoney { getset; }  
  7.     [ItemField(OnlyLoadAll = true)]    // 僅當(dāng)加載詳細(xì)信息時(shí)才加載它。  
  8.     public string Comment { getset; }  
  9.     public bool Finished { getset; }  
  10.     public string CustomerName { getset; }  
  11.  
  12.     [ItemField(IgnoreLoad=true)]    // 不加載這個(gè)成員  
  13.     public List<OrderDetail> Detail;  
  14. }  
  15.  
  16. public sealed class OrderDetail  
  17. {  
  18.     public int OrderID { getset; }  
  19.     public int ProductID { getset; }  
  20.     public decimal UnitPrice { getset; }  
  21.     public int Quantity { getset; }  

三個(gè)存儲(chǔ)過(guò)程,用于插入主表,子表,刷新總金額

  1. create procedure [dbo].[InsertOrder](  
  2.     @CustomerID int = null,  
  3.     @SumMoney money,  
  4.     @Comment nvarchar(300),  
  5.     @OrderID int output  
  6. )  
  7. as 
  8. begin  
  9.    
  10. insert into Orders( CustomerID, OrderDate, SumMoney, Comment)  
  11. values( @CustomerID, getdate(), @SumMoney, @Comment);  
  12.    
  13. set @OrderID = scope_identity();  
  14.    
  15. end;  
  16. create procedure [dbo].[InsertOrderDetail](  
  17.     @OrderID int,  
  18.     @ProductID int,  
  19.     @Quantity int 
  20. )  
  21. as 
  22. declare @Price money;  
  23. select @Price = (select UnitPrice from Products where ProductID = @ProductID);  
  24.  
  25. insert into [Order Details] (OrderID, ProductID, UnitPrice, Quantity)  
  26. values (@OrderID, @ProductID, @Price, @Quantity);  
  27.  
  28.  
  29. create procedure [dbo].[RefreshOrderSumMoney](  
  30.     @OrderID int 
  31. )  
  32. as 
  33. declare @SumMoney money;  
  34. select @SumMoney = (select sum(UnitPrice * Quantity) from [Order Details] where OrderID = @OrderID);  
  35.  
  36. update Orders set SumMoney = @SumMoney  where OrderID = @OrderID;  
  37.  

說(shuō)明:以上三個(gè)存儲(chǔ)要求先調(diào)用InsertOrder,然后獲取新的OrderID后,才能調(diào)用后面二個(gè)。下面來(lái)看看在C#中該如何調(diào)用這三個(gè)存儲(chǔ)過(guò)程吧。

C#調(diào)用代碼

  1. public int AddOrder(OrderItem order)  
  2. {  
  3.     // 以事務(wù)的方式創(chuàng)建一個(gè)FishDbContext對(duì)象,將使用默認(rèn)的連接字符串  
  4.     using( FishDbContext db = new FishDbContext(true) ) {  
  5.         // 添加記錄到表Orders,同時(shí)獲取新產(chǎn)生ID  
  6.         FishBLLHelper.CallSpExecuteNonQuery(db, "InsertOrder", order);  
  7.           
  8.         // 為訂單明細(xì)設(shè)置OrderId,并添加到表[Order Details]  
  9.         order.Detail.ForEach(x => {  
  10.             x.OrderID = order.OrderID;  
  11.             FishBLLHelper.CallSpExecuteNonQuery(db, "InsertOrderDetail", x);  
  12.         });  
  13.  
  14.         // 刷新訂單總金額。  
  15.         FishBLLHelper.CallSpExecuteNonQuery(db, "RefreshOrderSumMoney"null, order.OrderID);  
  16.  
  17.         // 提交事務(wù)。  
  18.         db.CommitTransaction();  
  19.  
  20.         return order.OrderID;  
  21.     }  
  22. }  

好了,示例就寫(xiě)到這里,方不方便嘛,自己覺(jué)得好用就行。

今天先不談ORM工具,我們只談存儲(chǔ)過(guò)程,下次我會(huì)寫(xiě)個(gè)關(guān)于性能測(cè)試的文章來(lái)專門(mén)談ORM。

原文鏈接:http://www.cnblogs.com/fish-li/archive/2011/03/28/1998104.html

【編輯推薦】

  1. DBA應(yīng)用技巧:如何升級(jí)InnoDB Plugin
  2. 一句代碼實(shí)現(xiàn)批量數(shù)據(jù)綁定 上
  3. 一句代碼實(shí)現(xiàn)批量數(shù)據(jù)綁定 下
  4. MySQL日志操作教程:DBA們管理的利器
  5. MySQL觸發(fā)器如何正確使用

 

責(zé)任編輯:艾婧 來(lái)源: 博客園
相關(guān)推薦

2011-05-07 12:56:39

數(shù)據(jù)訪問(wèn)

2011-05-10 16:44:43

數(shù)據(jù)訪問(wèn)層

2011-05-05 14:33:34

數(shù)據(jù)訪問(wèn)層

2009-08-13 14:59:00

C#數(shù)據(jù)訪問(wèn)層

2012-01-11 09:46:31

DAL

2009-04-02 10:37:52

通用基類SQLLINQ

2009-08-04 10:17:55

ASP.NET SqlASP.NET數(shù)據(jù)訪問(wèn)

2009-08-19 10:54:42

ASP.NET數(shù)據(jù)訪問(wèn)

2009-09-04 18:00:54

C#數(shù)據(jù)訪問(wèn)層

2012-06-07 10:53:08

架構(gòu)設(shè)計(jì)數(shù)據(jù)訪問(wèn)層設(shè)計(jì)原則

2009-07-24 13:25:43

創(chuàng)建數(shù)據(jù)訪問(wèn)層

2012-08-15 11:03:18

框架項(xiàng)目

2009-07-24 14:15:51

數(shù)據(jù)訪問(wèn)層

2025-01-26 17:00:46

2012-02-24 09:07:53

云計(jì)算成本

2009-07-24 13:45:28

添加參數(shù)化

2025-04-08 09:40:00

DWD數(shù)據(jù)倉(cāng)庫(kù)大數(shù)據(jù)

2023-07-27 08:16:51

數(shù)據(jù)訪問(wèn)層項(xiàng)目

2024-11-18 08:00:00

數(shù)據(jù)倉(cāng)庫(kù)通用語(yǔ)義層商業(yè)智能

2009-07-28 09:42:22

.NET數(shù)據(jù)訪問(wèn)層
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品美女www| 亚洲欧美中文字幕| 国产精品成人久久电影| 色wwwwww| 久久se精品一区精品二区| 久久国产精品影片| 亚洲一区二区观看| 亚洲精品一区av| 精品国产1区2区| 一区二区三区四区| 天天操天天射天天舔| 美女视频黄免费的久久 | 一本久道中文字幕精品亚洲嫩| 香蕉久久夜色| 日本国产在线观看| 久久黄色级2电影| 欧美在线性视频| 青青草成人免费| 欧美亚洲精品在线| 亚洲精品91美女久久久久久久| av污在线观看| 一区二区电影免费观看| 亚洲欧美日韩电影| 亚洲国产婷婷香蕉久久久久久99| 亚洲欧美另类综合| 国产一区二三区| 国产精品爱久久久久久久| 国产亚洲精品久久777777| 久久精品99久久无色码中文字幕| 亚洲精品成a人在线观看| 国产乱女淫av麻豆国产| 日韩精品免费观看视频| 亚洲成人一二三| 男女啪啪免费观看| 蜜芽在线免费观看| 国产日产欧美精品一区二区三区| 国产一区二区久久久| 国产不卡av在线播放| 久久国产精品99久久人人澡| 国产97在线|亚洲| 久久久久亚洲av成人毛片韩| 欧美精品色网| 美女少妇精品视频| 亚洲 欧美 变态 另类 综合| 成久久久网站| 一区二区三区无码高清视频| 性欧美成人播放77777| 国产伦理久久久久久妇女| 欧美一级黄色大片| 北条麻妃亚洲一区| 精品久久亚洲| 欧美一级黄色录像| 韩国三级丰满少妇高潮| 外国成人毛片| 91精品综合久久久久久| 亚洲高清av一区二区三区| 91精品福利观看| 欧美人与禽zozo性伦| 在线观看免费黄网站| 成人免费毛片嘿嘿连载视频…| 欧洲国内综合视频| 视色视频在线观看| 亚洲精品三区| 日韩欧美精品在线| 成人做爰www看视频软件| 国产精品sss在线观看av| 精品999在线播放| 玖玖爱在线精品视频| 色狠狠久久av综合| 中文字幕9999| 手机av在线看| 精品69视频一区二区三区Q| 国内精品久久久久伊人av| 日本少妇毛茸茸高潮| 亚洲影视在线| 国产精品久久视频| 国产三级伦理片| 成人国产精品免费网站| 欧美国产综合视频| 午夜视频在线观看免费视频| 一区二区三区四区视频精品免费| 国产免费一区二区视频| 成人软件在线观看| 3d动漫精品啪啪1区2区免费| 日本wwwwwww| 国产欧美日韩精品高清二区综合区| 在线看欧美日韩| 欧美精品入口蜜桃| 玖玖视频精品| 91视频最新| 黄色片在线播放| 亚洲人成网站影音先锋播放| 免费av观看网址| 欧美啪啪网站| 亚洲国产精品小视频| 国产精品www爽爽爽| 女同性一区二区三区人了人一 | 久久精品女人天堂av免费观看| 欧美精品一二三区| 亚洲制服丝袜在线播放| 久久福利影院| 2019中文字幕在线| 国产精品一区二区人人爽| 91在线国产观看| 一区二区三区四区五区视频| 俄罗斯一级**毛片在线播放| 欧美丝袜丝nylons| 日本护士做爰视频| 亚洲字幕久久| 国产精品video| 六月婷婷综合网| 中文字幕一区二区日韩精品绯色| 日韩欧美一区三区| 国产麻豆一区二区三区| 亚洲少妇激情视频| 国产精品成人国产乱| 毛片av中文字幕一区二区| 国产成人一区二区三区免费看| jizz在线免费观看| 精品国产乱码久久久久久天美 | 1024精品合集| 成人免费毛片网| 久久国产精品免费一区二区三区| 亚洲另类欧美自拍| 精品无码av在线| 国精产品一区一区三区mba桃花| 欧美日韩免费精品| 黄色漫画在线免费看| 日韩欧美区一区二| 国产一二三区精品| 美腿丝袜亚洲色图| 日本成人黄色| 韩国成人动漫| 日韩二区三区在线| 久久精品欧美一区二区| 国产精一品亚洲二区在线视频| 日韩av高清| 偷拍精品精品一区二区三区| 日韩av网站导航| 亚洲国产精品午夜在线观看| 成人午夜av电影| 成年女人18级毛片毛片免费 | 欧美精品免费观看二区| av中文字幕在线观看第一页| 精品国产成人系列| 久久网免费视频| 国产ts人妖一区二区| a级片一区二区| 亚洲图色一区二区三区| 欧美俄罗斯乱妇| 亚洲AV午夜精品| 亚洲制服丝袜一区| 欧美夫妇交换xxx| 日韩视频二区| 蜜桃导航-精品导航| 日韩伦理精品| 亚洲视频网站在线观看| 天天干,天天干| 日本一区二区不卡视频| 艹b视频在线观看| 91久久高清国语自产拍| 91观看网站| 国产在线xxx| 亚洲国产精品字幕| 麻豆成人免费视频| 中文字幕第一区| 在线视频观看一区二区| 亚洲无线视频| 欧美国产二区| 四虎国产精品免费久久5151| 欧美精品日韩三级| 蜜臀久久久久久999| 岛国精品视频在线播放| 久久久久亚洲av成人无码电影| 热久久一区二区| 在线视频91| 粉嫩av一区二区| 日本乱人伦a精品| 免费在线午夜视频| 91精品国产欧美一区二区| 久久免费视频99| 久久久五月婷婷| 亚洲欧美日韩一二三区| 亚洲在线观看| 中文字幕制服丝袜在线| 精品三级av在线导航| 国产精品久久久久国产a级| av片在线观看网站| 亚洲男人av在线| 国产男女裸体做爰爽爽| 亚洲va天堂va国产va久| 亚洲一二三精品| 成人午夜视频在线| 国产视频手机在线播放| 在线欧美三区| 五月天色一区| 欧美18免费视频| 国产在线999| 涩涩涩视频在线观看| 日韩在线www| 偷拍自拍在线| 日韩一区二区三区四区| 黄色av一级片| 亚洲国产欧美在线人成| 国产又粗又长免费视频| 99国产精品视频免费观看| 日韩av片免费观看| 久久久久看片| 亚洲色成人www永久在线观看| 国产精品一区高清| 国产 高清 精品 在线 a| 日韩三区四区| 国产成人av网| 黄在线观看免费网站ktv| 欧美精品亚州精品| 日本中文字幕在线看| 国产午夜精品理论片a级探花| 99re只有精品| 欧美日韩一区小说| 亚洲精品中文字幕乱码三区91| 亚洲一区av在线| 国产探花在线视频| 国产女人aaa级久久久级| 国产黄色三级网站| 成人午夜视频在线观看| 在线观看网站黄| 国内精品免费在线观看| 亚洲欧美激情网| 欧美亚洲一区| 国产超级av在线| 99热精品在线观看| 国产资源在线免费观看| 亚洲性人人天天夜夜摸| 欧美日韩激情四射| 亚洲成av人电影| 亚洲最大色综合成人av| 成人免费电影网址| 色噜噜色狠狠狠狠狠综合色一| 自拍偷拍一区| 欧美一区二区三区电影在线观看| 小嫩嫩12欧美| 蜜桃网站成人| 亚洲综合图色| 日韩久久久久久久| 欧美亚洲国产精品久久| 亚洲韩国在线| 久久影视一区| 好吊色这里只有精品| 久久理论电影| 青青草综合在线| 亚洲无线一线二线三线区别av| 丰满少妇大力进入| 日韩一级大片| 成人在线免费在线观看| 丝袜美腿一区二区三区| 丝袜制服一区二区三区| 九色综合国产一区二区三区| 国产精品v日韩精品v在线观看| 老司机午夜精品| 在线播放免费视频| 成人午夜精品在线| 手机av免费看| 国产精品毛片大码女人| 色在线观看视频| 亚洲成人av一区| 国产精品视频123| 欧美色网一区二区| 国产精品一区二区免费视频| 精品奇米国产一区二区三区| 四虎影院在线播放| 亚洲人成电影在线| 欧美天天影院| 久久久久久国产精品三级玉女聊斋 | 中文字幕日韩欧美一区二区三区| 永久免费看黄网站| 欧美日韩国产中文精品字幕自在自线 | 黄网在线免费| 久久精品国产69国产精品亚洲| 欧美男男video| 日本成人在线视频网址| 999色成人| 美媛馆国产精品一区二区| 成人激情诱惑| 亚洲 欧美 综合 另类 中字| 玖玖精品视频| 激情小说欧美色图| 久久久久久**毛片大全| 国产精品丝袜一区二区| 偷拍一区二区三区四区| 中文字幕观看视频| 欧美精品一区二区精品网| 国产视频网站在线| 欧美黑人xxx| 成人毛片免费| 国产一区二区无遮挡| 欧美a级片视频| 免费无码不卡视频在线观看| 精品一区二区在线免费观看| 欧美精品黑人猛交高潮| 亚洲欧美aⅴ...| 亚洲成人av影片| 欧美videos中文字幕| av电影在线观看| 韩国精品久久久999| 爱情电影网av一区二区| 欧美日韩精品免费观看视一区二区| 欧美日韩ab| 日韩肉感妇bbwbbwbbw| 成人精品视频.| 色欲一区二区三区精品a片| 欧美性精品220| 亚洲精品一区二区三区新线路| 中文字幕精品在线视频| 波多野结衣亚洲一二三| wwwxx欧美| 亚洲欧洲中文字幕| 日本黄大片一区二区三区| 久久久久久久久久看片| 日韩欧美不卡视频| 日韩一本二本av| 黄色网在线看| 国产精品自在线| 国产99久久久国产精品成人免费 | 国产中文av在线| 在线视频一区二区三区| 色视频免费在线观看| 久久久久久久色| baoyu135国产精品免费| 国产日产欧美一区二区| 麻豆精品在线观看| 超碰人人干人人| 欧美在线看片a免费观看| 欧美巨乳在线| 欧美一级大片在线免费观看| 加勒比色综合久久久久久久久| 欧美激情亚洲天堂| 国产高清久久久| 久草免费在线观看视频| 欧美大片拔萝卜| 青青草原av在线| 国产精品12| 精品91在线| 精品少妇人妻av一区二区三区| 亚洲一区二区精品视频| 亚洲成人av综合| 久久久亚洲国产天美传媒修理工| 一区二区精彩视频| 996这里只有精品| 粉嫩一区二区三区在线看| 久久久久99精品成人片毛片| 欧美成人一区二区三区| 国产探花视频在线观看| 精品一卡二卡三卡四卡日本乱码 | 欧美四级电影在线观看| porn视频在线观看| 成人免费网站在线看| 亚洲欧美在线专区| 中文字幕18页| 精品久久久久久久久久久| 婷婷国产在线| 国产精品久久久久久久电影 | 国产日韩一级二级三级| 一级久久久久久| 久久精品国产2020观看福利| 免费一级欧美片在线观看网站| 免费在线看黄色片| 久久一区二区三区四区| 艳妇乳肉豪妇荡乳av无码福利 | 人妻久久一区二区| 精品少妇一区二区三区日产乱码| 爱草tv视频在线观看992| 日本不卡高清视频一区| 国内精品久久久久影院薰衣草| 日本在线视频免费| 亚洲系列中文字幕| 精品一区二区三区免费看| 久久视频这里有精品| 亚洲国产精品成人久久综合一区| 国产男男gay体育生白袜| 97久久超碰福利国产精品…| 精品国产视频| 小日子的在线观看免费第8集| 欧美日韩中国免费专区在线看| 一级毛片视频在线观看| 国产伦精品一区二区三区照片91| 日韩制服丝袜av| 一级性生活免费视频| 亚洲国产日韩欧美在线99| 国产精品伊人| 精品国产av无码一区二区三区| 欧美高清在线一区| 午夜精品久久久久久久第一页按摩| 日韩男女性生活视频| 欧美日韩一视频区二区| 第一次破处视频| 欧美mv和日韩mv国产网站| 激情亚洲小说| 黄色片久久久久| 一区二区激情视频| 香蕉视频网站在线观看|