亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

MongoDB入門(mén)教程之C#驅(qū)動(dòng)操作實(shí)例

2020-10-29 18:53:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

作為系列的最后一篇,得要說(shuō)說(shuō)C#驅(qū)動(dòng)對(duì)mongodb的操作,目前驅(qū)動(dòng)有兩種:官方驅(qū)動(dòng)和samus驅(qū)動(dòng),不過(guò)我個(gè)人還是喜歡后者,

因?yàn)樘峁┝素S富的linq操作,相當(dāng)方便。

官方驅(qū)動(dòng):https://github.com/mongodb/mongo-csharp-driver/downloads。下載后,還提供了一個(gè)酷似msdn的幫助文檔。

samus驅(qū)動(dòng):https://github.com/samus/mongodb-csharp/downloads。

下面就具體看看samus驅(qū)動(dòng),https://github.com/samus/mongodb-csharp/blob/master/examples/Simple/Main.cs上面提供了

一個(gè)簡(jiǎn)單的demo,大體上看看我們就知道怎么玩了。

一: 實(shí)踐

1:我們建立一個(gè)Person實(shí)體,MongoAlias特性表示取別名,這里的ID值將會(huì)覆蓋掉數(shù)據(jù)庫(kù)自動(dòng)生成的_id。

復(fù)制代碼 代碼如下:

#region 數(shù)據(jù)實(shí)體
    /// <summary>
/// 數(shù)據(jù)實(shí)體
/// </summary>
    public class Person
    {
        [MongoAlias("_id")]
        public string ID { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public DateTime CreateTime { get; set; }
    }
    #endregion

2:初始化一些變量

復(fù)制代碼 代碼如下:

string connectionString = string.Empty;

        string databaseName = string.Empty;

        string collectionName = string.Empty;

        static MongodbHelper<T> mongodb;

        #region 初始化操作
/// <summary>
/// 初始化操作
/// </summary>
        public MongodbHelper()
        {
            connectionString = "Server=127.0.0.1:2222";
            databaseName = "shopex";
            collectionName = "person";
        }
        #endregion

3:為了方便T的繼承類(lèi)使用linq功能,我們還需要映射一下。

復(fù)制代碼 代碼如下:

#region 實(shí)現(xiàn)linq查詢的映射配置
        /// <summary>
/// 實(shí)現(xiàn)linq查詢的映射配置
/// </summary>
        public MongoConfiguration configuration
        {
            get
            {
                var config = new MongoConfigurationBuilder();

                config.Mapping(mapping =>
                {
                    mapping.DefaultProfile(profile =>
                    {
                        profile.SubClassesAre(t => t.IsSubclassOf(typeof(T)));
                    });
                    mapping.Map<T>();
                    mapping.Map<T>();
                });

                config.ConnectionString(connectionString);

                return config.BuildConfiguration();
            }
        }
        #endregion

4:下面是一些基本的CURD的代碼,跟寫(xiě)EF代碼很類(lèi)似,寫(xiě)起來(lái)好舒服。

復(fù)制代碼 代碼如下:

#region 插入操作
        /// <summary>
/// 插入操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Insert(T t)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    collection.Insert(t, true);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 更新操作
        /// <summary>
/// 更新操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Update(T t, Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    collection.Update<T>(t, func, true);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 獲取集合
        /// <summary>
///獲取集合
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public List<T> List(int pageIndex, int pageSize, Expression<Func<T, bool>> func, out int pageCount)
        {
            pageCount = 0;

            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    pageCount = Convert.ToInt32(collection.Count());

                    var personList = collection.Linq().Where(func).Skip(pageSize * (pageIndex - 1))
                                                   .Take(pageSize).Select(i => i).ToList();

                    mongo.Disconnect();

                    return personList;

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 讀取單條記錄
        /// <summary>
///讀取單條記錄
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public T Single(Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    var single = collection.Linq().FirstOrDefault(func);

                    mongo.Disconnect();

                    return single;

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 刪除操作
        /// <summary>
/// 刪除操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Delete(Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    //這個(gè)地方要注意,一定要加上T參數(shù),否則會(huì)當(dāng)作object類(lèi)型處理
//導(dǎo)致刪除失敗
                    collection.Remove<T>(func);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

5.   好,我們開(kāi)一下2222端口,由于前前篇我已經(jīng)把這個(gè)mongodb做成了服務(wù),現(xiàn)在就直接連過(guò)去了,并做一下對(duì)Name的索引。

6. 一切準(zhǔn)備妥當(dāng),我們做下基本的操作,比如這里我添加一千條數(shù)據(jù),注意我開(kāi)啟的是安全模式,如果插入不成功,將會(huì)拋出異常。

 <1> Add:

 

復(fù)制代碼 代碼如下:

 static void Main(string[] args)
        {
            MongodbHelper<Person> helper = new MongodbHelper<Person>();

            //插入1000條數(shù)據(jù)
            for (int i = 0; i < 1000; i++)
            {
                helper.Insert(new Person()
                {
                    ID = Guid.NewGuid().ToString(),
                    Name = "jack" + i,
                    Age = i,
                    CreateTime = DateTime.Now
                });
            }

            Console.WriteLine("插入成功");

            Console.Read();
        }
 


 乍一看顯示的數(shù)據(jù)以為有問(wèn)題,為什么沒(méi)有出現(xiàn)jack0或者jack999,不過(guò)find的一下后心情舒坦了。

<2> update:   這里就把jack941的名字改掉“mary”

復(fù)制代碼 代碼如下:

static void Main(string[] args)
        {
            MongodbHelper<Person> helper = new MongodbHelper<Person>();

            //修改jack941改成mary
            var single = helper.Single(i => i.Name == "jack941");
            single.Name = "mary";
            helper.Update(single, i => i.ID == single.ID);

            Console.WriteLine("修改成功");
            Console.Read();
        }

<3>Delete:  刪除mary這條記錄

復(fù)制代碼 代碼如下:

static void Main(string[] args)
        {
            MongodbHelper<Person> helper = new MongodbHelper<Person>();

            //刪除mary這個(gè)記錄
            helper.Delete(i => i.Name == "mary");

            Console.WriteLine("刪除成功");
            Console.Read();
        }

<4> list操作: 這里我獲取一下名字里面帶9的人數(shù)列表

復(fù)制代碼 代碼如下:

static void Main(string[] args)
        {
            MongodbHelper<Person> helper = new MongodbHelper<Person>();

            int pagecount;

            //獲取名字里面帶9的人數(shù)
            var list = helper.List(1, 20, i => i.Name.Contains("9"), out pagecount);

           Console.Read();
        }

總的運(yùn)行代碼

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Linq.Expressions;

using MongoDB.Configuration;
using MongoDB.Linq;
using MongoDB.Attributes;


namespace MongoDB.Test
{
    public class MongodbHelper<T> where T : class
    {
        string connectionString = string.Empty;

        string databaseName = string.Empty;

        string collectionName = string.Empty;

        static MongodbHelper<T> mongodb;

        #region 初始化操作
        /// <summary>
/// 初始化操作
/// </summary>
        public MongodbHelper()
        {
            connectionString = "Server=127.0.0.1:2222";
            databaseName = "shopex";
            collectionName = "person";
        }
        #endregion

        #region 實(shí)現(xiàn)linq查詢的映射配置
        /// <summary>
/// 實(shí)現(xiàn)linq查詢的映射配置
/// </summary>
        public MongoConfiguration configuration
        {
            get
            {
                var config = new MongoConfigurationBuilder();

                config.Mapping(mapping =>
                {
                    mapping.DefaultProfile(profile =>
                    {
                        profile.SubClassesAre(t => t.IsSubclassOf(typeof(T)));
                    });
                    mapping.Map<T>();
                    mapping.Map<T>();
                });

                config.ConnectionString(connectionString);

                return config.BuildConfiguration();
            }
        }
        #endregion

        #region 插入操作
        /// <summary>
/// 插入操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Insert(T t)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    collection.Insert(t, true);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 更新操作
        /// <summary>
/// 更新操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Update(T t, Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    collection.Update<T>(t, func, true);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 獲取集合
        /// <summary>
///獲取集合
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public List<T> List(int pageIndex, int pageSize, Expression<Func<T, bool>> func, out int pageCount)
        {
            pageCount = 0;

            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    pageCount = Convert.ToInt32(collection.Count());

                    var personList = collection.Linq().Where(func).Skip(pageSize * (pageIndex - 1))
                                                   .Take(pageSize).Select(i => i).ToList();

                    mongo.Disconnect();

                    return personList;

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 讀取單條記錄
        /// <summary>
///讀取單條記錄
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public T Single(Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    var single = collection.Linq().FirstOrDefault(func);

                    mongo.Disconnect();

                    return single;

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion

        #region 刪除操作
        /// <summary>
/// 刪除操作
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
        public void Delete(Expression<Func<T, bool>> func)
        {
            using (Mongo mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var db = mongo.GetDatabase(databaseName);

                    var collection = db.GetCollection<T>(collectionName);

                    //這個(gè)地方要注意,一定要加上T參數(shù),否則會(huì)當(dāng)作object類(lèi)型處理
//導(dǎo)致刪除失敗
                    collection.Remove<T>(func);

                    mongo.Disconnect();

                }
                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
        #endregion
    }

    #region 數(shù)據(jù)實(shí)體
    /// <summary>
/// 數(shù)據(jù)實(shí)體
/// </summary>
    public class Person
    {
        [MongoAlias("_id")]
        public string ID { get; set; }

        public string Name { get; set; }

        public int Age { get; set; }

        public DateTime CreateTime { get; set; }
    }
    #endregion
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久精品夜色噜噜亚洲aⅴ| 亚洲一区av在线播放| 日韩欧美视频一区二区三区四区| 久久久精品人妻一区二区三区| 亚洲天堂精品视频| 成人污污www网站免费丝瓜| 久久久久久激情| 天天操天天干天天操| 91精品国产成人www| www一区二区www免费| 91精品久久久久久久久久久久久久| 91啪国产在线| 中文字幕毛片| 精品国产成人| 国产黄色美女视频| 狠狠久久亚洲欧美专区| 亚洲成a天堂v人片| 国产真实乱人偷精品人妻| 五月激情综合网| 99亚洲乱人伦aⅴ精品| 久久综合久久综合久久| 亚洲欧美日韩一区二区在线| 国产一级特黄aaa大片| 国产农村妇女精品一区| 亚洲性夜色噜噜噜7777| 狠狠干成人综合网| 日韩第一区第二区| 久久国产中文字幕| 欧美午夜影院一区| 美女网站色精品尤物极品姐弟| av激情在线观看| 国产亚洲一区二区在线观看| 国产高清av在线播放| 九九视频精品在线观看| 高潮无码精品色欲av午夜福利| 欧美性猛交xxxx免费看蜜桃| 亚洲精品国产精品国自| 激情欧美成人久久综合小说| 亚洲国产中文在线二区三区免| 国产精品免费人成网站| 国产一区二区丝袜| 黄色三级视频在线观看| 日本一区福利在线| 1769国产精品视频| 一区二区三区免费观看视频| 亚洲国内精品在线| 91成人在线免费| 成人台湾亚洲精品一区二区| 国严精品久久久久久亚洲影视| 亚洲成人av在线| www天堂在线观看| 亚洲狠狠婷婷| 久久精品视频99| 国产真人做爰视频免费| 亚洲欧美日韩第一区| 在线成人激情| 欧美日韩在线视频一区二区三区| 国产无遮挡呻吟娇喘视频| 99热在线免费观看| 亚洲欧美另类小说视频| 久久久久五月天| 天天操天天摸天天舔| 日韩黄色三级在线观看| 日韩jizzz| 精品人妻一区二区色欲产成人| 国产91在线免费观看| 久久亚洲电影天堂| 日本中文字幕高清视频| 日本三级福利片| 色综合久久中文字幕| 久久精品国产精品国产精品污| 91国产在线播放| 中文字幕乱码人妻无码久久| 91在线免费观看| 久久婷婷蜜乳一本欲蜜臀| 台湾佬中文娱乐久久久| 国产精品女主播av| 日本婷婷久久久久久久久一区二区| 亚洲女同中文字幕| 久久亚洲欧美日韩精品专区| 欧美一区二区三区四区五区| 国模雨婷捆绑高清在线| 狠狠综合久久av一区二区小说| 一级黄在线观看| 处破女av一区二区| 欧美激情第四页| 丝袜老师办公室里做好紧好爽| 超碰在线资源| 亚洲综合在线第一页| 精品国产一区探花在线观看| 蜜桃av噜噜一区二区三区小说| 国产白丝一区二区三区| 午夜亚洲伦理| 狠狠操第一页| 久久99精品久久久久久青青日本| 国产精品女同互慰在线看| 国产日韩精品在线| 欧美一区二区三区四区五区六区| 日本在线观看天堂男亚洲| 狠狠艹夜夜干| 日本wwwwwwwzzzzz视频| 国产精品1区2区| 免费看黄裸体一级大秀欧美| 久久九九全国免费精品观看| 成人性生交大片免费看网站| 91九色在线视频| 欧美激情一二区| 一区二区三区伦理片| 国产真乱mangent| 久久综合九色| 成人国产亚洲精品a区天堂华泰| 国产精品一区二区日韩| 欧美三日本三级少妇三2023| 国产精品毛片一区二区在线看| 日韩国产在线一区| 欧美精品一区在线播放| 91玉足脚交白嫩脚丫在线播放| 国产精品主播视频| 国产三级视频网站| 一区二区三区www| 日本丰满大乳奶| 亚洲尤物在线| 秋霞午夜av一区二区三区| 久久久久免费看黄a片app| av毛片在线免费观看| 欧美黄色三级网站| 狠狠人妻久久久久久综合| 在线免费av一区| 亚洲第一视频网| 极品色av影院| 147欧美人体大胆444| 精品丰满人妻无套内射| 欧美偷窥清纯综合图区| 久久国产亚洲精品| 亚欧视频在线观看| 91精品国自产在线| 亚洲性视频在线| 丝袜脚交免费网站xx| 97影院理论午夜| 国产欧美一区二区三区网站| www.青青草| 8x8x视频在线| 成人久久久久久久久| 国产欧美一区视频| 欧美一区二区三区精品| 成人免费黄色在线| 高清hd写真福利在线播放| 亚洲少妇屁股交4| 久热精品在线| 国产黄色片在线| 一级片免费网站| 伦理一区二区三区| 日韩中文字幕一区| 亚洲天堂中文字幕| 国产成人综合亚洲网站| 国内偷拍精品视频| aⅴ色国产欧美| 国产精品高潮呻吟视频| 欧美大片在线看免费观看| 视频一区二区综合| 色琪琪久久se色| 日韩免费在线免费观看| 日本欧美电影在线观看| 91视频 -- 69xx| 9999热视频| 欧美日韩精品高清| 国精产品一区一区三区视频| 九九爱免费视频在线观看| 久久蜜桃av一区二区天堂| 国产精品久久久久av福利动漫| 久久中文字幕一区| 日韩激情av在线免费观看| 日本韩国欧美一区二区三区| 一级黄色片国产| 亚洲国产欧美不卡在线观看| 国产精品99一区二区| fc2ppv国产精品久久| 国产偷自视频区视频一区二区| 国产成人无码专区| 新67194成人永久网站| 免费无码毛片一区二三区| 我要看一级黄色大片| 日韩精品免费观看| 亚洲婷婷国产精品电影人久久| 神马日本精品| 97精品人妻一区二区三区| www.亚洲自拍| 日韩欧美精品一区二区综合视频| 日韩一卡二卡在线观看| 久久久久久久久久久久久久国产| 日韩一区二区三区不卡| 久久蜜桃av一区精品变态类天堂| 欧美日韩国产一级二级| 色哟哟一区二区| 国产成人在线播放视频| 天堂俺去俺来也www久久婷婷| 精品粉嫩aⅴ一区二区三区四区| 日韩毛片在线一区二区毛片| 国产 国语对白 露脸| 日韩一区二区久久| 欧美精品电影在线| av无码久久久久久不卡网站| 成人性色生活片免费看爆迷你毛片| 嗯用力啊快一点好舒服小柔久久| 成人福利视频在线| 欧美a v在线播放| 国产美女福利在线| 99这里只有久久精品视频| 国产精品一区专区欧美日韩| 成年人在线免费观看视频网站| 无码人妻av免费一区二区三区| 国产精品91xxx| 欧洲一区二区av| 欧美国产综合| 91啦中文在线观看| 亚洲精品午夜在线观看| 麻豆网站视频在线观看| 性久久久久久久久久久久| 亚洲色图第一页| 中文字幕在线免费观看| 日韩一区二区在线看| 中文字幕乱码人妻二区三区| 亚洲综合偷拍欧美一区色| 欧美一级二级三级乱码| 国产黄色片免费在线观看| 日韩欧美三级在线| 久久精视频免费在线久久完整在线看| 最好看的2019年中文视频| 国产三级第一页| 97精品久久人人爽人人爽| 日韩久久久久久| 日本三级免费看| 国产美女免费网站| 羞羞在线观看网站| 天天色天天爱天天射综合| 一本色道久久加勒比88综合| www.成人在线| 中文在线播放一区二区| 欧美高清在线一区| 99高清视频有精品视频| 色综合久久天天综合网| 黄网页免费在线观看| 欧美中文字幕一区二区三区| 精品国产123| 国产成人一区二区三区影院在线| 日本一二三区不卡| 日韩午夜在线观看视频| 国产精品亚洲一区二区三区在线| 欧美丝袜丝交足nylons172| 国产精品沙发午睡系列990531| 欧美hdxxxx| 国产精品久久国产精麻豆99网站| 国产无套粉嫩白浆内谢的出处| 欧美日韩国产精品一区二区三区四区| 日本高清不卡三区| 中文字幕一区二区久久人妻网站| 高清一区二区中文字幕| av网在线观看| 国产区精品在线| 美乳少妇欧美精品| 在线精品91av| 欧美极品中文字幕| 国产视频一区二区在线观看| 色中色综合影院手机版在线观看| 四虎一区二区三区| 日本一二区不卡| 亚洲国产高清不卡| 欧美一卡在线观看| 好操啊在线观看免费视频| 538视频在线| 在线黄色.com| 第一页在线视频| 国产精品极品美女粉嫩高清在线| 夜夜躁狠狠躁日日躁2021日韩| 色综合欧美在线视频区| 黄色片网站在线观看| 男人c女人视频| 女人在下体塞跳蛋在线观看| 中文字幕日韩专区| 久久艹在线视频| 你懂的在线播放| 精品成人国产| 亚洲色图狠狠干| 欧美精品国产精品日韩精品| 一区二区三区毛片免费| 日韩一区二区在线观看| 男人的天堂av网站| 视频污在线观看| 一区二区成人在线观看| 成人视屏免费看| 污污的网站在线观看| gogo在线观看| caoporm免费视频在线| 亚洲不卡视频| 国产婷婷色一区二区三区四区| 神马午夜伦理不卡| 亚洲男子天堂网| 91大神在线资源观看无广告| 欧美成人黑人猛交| 黄黄的网站在线观看| 久久黄色免费看| 日韩亚洲第一页| 亚洲欧美日韩区| 国产精品入口尤物| 糖心vlog免费在线观看| 天天操夜夜操视频| 日本在线视频免费| 精品无码久久久久成人漫画| 欧美久久一区二区| 国产精品无码专区在线观看| 国产一区二区福利| 国产成人亚洲欧美电影| 天堂午夜影视日韩欧美一区二区| 国产在线观看无码免费视频| 蜜桃精品在线观看| 99热这里只有精品免费| 欧美自拍偷拍一区二区| 久草精品视频在线观看| jizzjizzjizz亚洲| 无码人妻精品一区二区三区9厂| xfplay5566色资源网站| 天天操夜夜操天天射| 国产精品伊人日日| av软件在线观看| 伊人免费在线观看| 成人精品视频一区二区| 亚洲精品激情视频| 国产小视频免费在线观看|