日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C#监控类属性的更改(大花猫动了哪些小玩具)

發(fā)布時(shí)間:2023/12/13 综合教程 56 生活家
生活随笔 收集整理的這篇文章主要介紹了 C#监控类属性的更改(大花猫动了哪些小玩具) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  C#監(jiān)控類屬性的更改(大花貓動(dòng)了哪些小玩具)

  實(shí)體類創(chuàng)建后在方法中對哪些屬性賦值了,傳遞到底層方法時(shí)在底層如何得知哪些屬性被賦值過。如何監(jiān)控屬性的更改,請看腦洞大開之《大花貓動(dòng)了哪些小玩具》——記屬性監(jiān)控之曲線救國。

  在使用EF更新數(shù)據(jù)庫實(shí)體時(shí)。很多時(shí)候我們想要的只是更新表中的某一個(gè)或部分字段。雖然可以通過設(shè)置來告訴上下文我們要更新的字段。但是一般我們都會(huì)把數(shù)據(jù)持久層封裝起來。通過泛型操作。而這時(shí)我們就無法得知應(yīng)用層面修改了哪些字段了。

  最近也在學(xué)習(xí)EF,就正好遇到了這個(gè)問題。當(dāng)然,如果直接在應(yīng)用層面使用,通過設(shè)置字段的IsModified狀態(tài)就可以了。如下
  db.Entry(model).Property(x => x.Token).IsModified = false;
  可是,這僅限于學(xué)習(xí)和demo。正式開發(fā)中一般是不會(huì)把這種底層操作公開給應(yīng)用層面的。都會(huì)把數(shù)據(jù)庫持久層進(jìn)行封裝。然后通過實(shí)體工廠(倉庫)加實(shí)體泛型的方式提供增刪改查。
  具體的可以參考《基于Entity Framework的Repository模式設(shè)計(jì)》之類的文章。
  這類方式都有一個(gè)共同點(diǎn),更新和刪除的時(shí)候都有如下類似代碼:

    public virtual void Update(TEntity TObject)
        {
            try
            {
                var entry = Context.Entry(TObject);
                Context.Set<TEntity>().Attach(TObject);
                entry.State = EntityState.Modified;
            }
            catch (OptimisticConcurrencyException ex)
            {
                throw ex;
            }
        }

  個(gè)人理解:Update(TEntity TObject)通過傳遞一個(gè)實(shí)體到方法,然后附加到數(shù)據(jù)庫上下文,并將數(shù)據(jù)標(biāo)記為修改狀態(tài)。然后進(jìn)行的更新。
  這種情況會(huì)對實(shí)體的所有字段進(jìn)行更新。那么我們則需要保證這個(gè)實(shí)體是從數(shù)據(jù)庫查出來的,或者與數(shù)據(jù)庫的記錄是對應(yīng)的上的。這在C/S結(jié)構(gòu)中是沒有問題的,可問題是在B/S結(jié)構(gòu)中呢?我們不可能把實(shí)體所有的字段都打包,發(fā)送到客戶端,然后客戶端修改在返回到服務(wù)端,然后在調(diào)用倉庫方法更新吧。說個(gè)最簡單的,修改用戶密碼,我們只需要一個(gè)用戶ID,一個(gè)新密碼就可以了。或者鎖定用戶賬號(hào),只需要一個(gè)用戶ID,一個(gè)鎖定狀態(tài),一個(gè)鎖定時(shí)間。這樣,我們不可能把整個(gè)用戶實(shí)體打包傳來傳去吧。有人說可以在保存的時(shí)候先根據(jù)ID查一遍數(shù)據(jù)庫,然后再將修改的屬性值附加上去后再更新就可以了。這就回到問題上了:在倉庫方法中只有泛型類型,而你在調(diào)用倉庫更新方法時(shí)傳遞的是一個(gè)實(shí)體類型。倉庫并不知道你是那個(gè)實(shí)體,并且更新了哪些字段。
當(dāng)然,通過觸發(fā)器我們知道數(shù)據(jù)庫的更新都是先刪后插,所以更新幾個(gè)字段與全列更新底層操作是沒有多少區(qū)別的。

  現(xiàn)在拋開倉庫更新等實(shí)體泛型等信息。就單看一下當(dāng)一個(gè)實(shí)體發(fā)生改變時(shí),我們怎么能知道他修改了哪些屬性。
  正常情況下一個(gè)實(shí)體長這樣

 1     /// <summary>
 2     /// 一個(gè)具體的實(shí)體
 3     /// </summary>
 4     public class AccountEntity : MainEntity
 5     {
 6         /// <summary>
 7         /// 文本類型
 8         /// </summary>
 9         public virtual string Account { get; set; }
10         /// <summary>
11         /// 又一個(gè)文本屬性
12         /// </summary>
13         public virtual string Password { get; set; }
14         /// <summary>
15         /// 數(shù)字類型
16         /// </summary>
17         public virtual int Sex { get; set; }
18         /// <summary>
19         /// 事件類型
20         /// </summary>
21         public virtual DateTime Birthday { get; set; }
22         /// <summary>
23         /// 雙精度浮點(diǎn)數(shù)
24         /// </summary>
25         public virtual double Height { get; set; }
26         /// <summary>
27         /// 十進(jìn)制數(shù)
28         /// </summary>
29         public virtual decimal Monery { get; set; }
30         /// <summary>
31         /// 二進(jìn)制
32         /// </summary>
33         public virtual byte[] PublicKey { get; set; }
34         /// <summary>
35         /// Guid類型
36         /// </summary>
37         public virtual Guid AreaId { get; set; }
38     }

View Code

  當(dāng)我們要修改這個(gè)實(shí)體的屬性時(shí):

var entity = new accountEntity();
entity.Id=1;
entity.Account = "給屬性賦值';

  然后將這個(gè)實(shí)體傳遞到底層進(jìn)行操作。

db.Update(entity);

  完全沒有問題,可是我的問題在底層怎么知道我應(yīng)用層修改了那幾個(gè)屬性呢?再加一個(gè)方法,告訴底層,我修改了這幾個(gè)屬性。

db.Update(entity,"Account");

  好像也沒有什么不可哈。

  可是這樣,如果我修改了Account,參數(shù)中卻傳遞了Password怎么辦?所以,應(yīng)該在實(shí)體上就應(yīng)該有一個(gè)集合對整個(gè)屬性是否有修改的狀態(tài)進(jìn)行存儲(chǔ)。然后到底層Update方法在取出更新過的字段進(jìn)行下一步操作。
  通過這一思路,我想到在實(shí)體中加一個(gè)字典:

protected Dictionary<string, dynamic> FieldTracking = new Dictionary<string, dynamic>();

  當(dāng)屬性賦值時(shí),則添加到字典中來。(當(dāng)然,這種操作是會(huì)增加程序的開銷的)

FieldTracking["Account"]="給屬性賦值";

  然后在底層在取出里面的集合,來區(qū)分哪些字段被修改(大花貓動(dòng)了哪些小玩具)。

  改造下實(shí)體屬性

        public virtual string Account
        {
            get
            { return _Account; }
            set {
                _Account = value;
                FieldTracking["Account"] = value;
            }
        }

  看過編譯后的IL代碼的都知道,class中的屬性最終會(huì)編譯成兩個(gè)方法 setvalue和getvalue,那么通過修改set方法添加FieldTracking["Account"] = value;就可以讓屬性在賦值的時(shí)候添加到字典中。

  很簡單吧。

  你以為這樣就完了。如果拿房間來比喻實(shí)體、拿玩具來比作屬性。我家那大花貓就是修改實(shí)體屬性的方法。你知道我家有多少玩具嗎?你每天回家的時(shí)候你知道大花貓動(dòng)了哪個(gè)小玩具嗎?給每個(gè)玩具裝個(gè)GPS?哈哈哈哈,別鬧,花這心思還不如再買點(diǎn)回來。什么?買回來的還得裝,算了。研究下怎么裝吧。

  一個(gè)程序可能有上百個(gè)實(shí)體類,修改現(xiàn)有的實(shí)體類,給每個(gè)set加一行?作為一個(gè)程序員是不可能容忍做這樣的操作的。寫一個(gè)工具,讀取所有的實(shí)體代碼,加上這一行,保存。這是個(gè)好辦法。那每次添加一個(gè)實(shí)體類就得調(diào)用工具重寫來一遍,每次修改屬性再調(diào)用一遍,恩。沒問題。能用就行。這不是一個(gè)真心養(yǎng)貓的人的人能容忍的。

  那怎么辦?把貓打死?那玩具的存在將會(huì)沒有任何意義。想到一個(gè)辦法,在我離開房子的時(shí)候(程序初始化),給房子里的所有房間(實(shí)體類)創(chuàng)建一個(gè)同樣的房間(繼承),包含了與原房間所有需要監(jiān)控(標(biāo)記為virtual)的玩具的復(fù)制,在復(fù)制過程中加上GPS(-_~)。然后給貓玩。貓通過我給的門進(jìn)到這個(gè)繼承的房間中玩所有玩具的時(shí)候,GPS就能將貓的動(dòng)作全部記錄下來。我一回家,這貓玩了哪些玩具一看GPS記錄就全知道了。喲,這小崽子,在王元鵝呢。
  

  看不懂,沒關(guān)系,上馬:
  1、在程序集初始化的時(shí)候,通過反射,查找所有繼承自BaseEntity的實(shí)體類。遍歷其中的屬性。找到標(biāo)記為virtual進(jìn)行復(fù)制。

    剛開始對于如果找到virtual屬性花了不少時(shí)間。我總只想著在屬性上找,卻沒想到去set_value方法上去找(其實(shí)get_value方法也是)。還是太菜啊。

    注:NoMapAttribute特性是一個(gè)自定義的標(biāo)記,表示不參與映射。因?yàn)椴粎⑴c映射就不需要監(jiān)控。與本文章代碼沒有太大的關(guān)系。僅供參考。

//獲取實(shí)體所在的程序集(ClassLibraryDemo)
var assemblyArray = AppDomain.CurrentDomain.GetAssemblies()
        .Where(w => w.GetName().Name == "ClassLibraryDemo")
        .ToList();
//實(shí)體的基類
var baseEntityType = typeof(BaseEntity);
//循環(huán)程序集
foreach (Assembly item in assemblyArray)
{
    //找到這個(gè)程序集中繼承自基類的實(shí)體
    var types = item.GetTypes().Where(t => t.IsAbstract == false
        && baseEntityType.IsAssignableFrom(t) 
        && t != baseEntityType);
    foreach (Type btItem in types){
        //遍歷這個(gè)實(shí)體類中的屬性
var properties = btItem.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                        .Where(w => w.CanRead && w.CanWrite
                            && w.GetCustomAttributes(typeof(NoMapAttribute), false).Any() == false
                            //TODO:要不要檢查get方法?
                            && w.GetSetMethod().IsVirtual);
    }
}

  2、根據(jù)1的結(jié)果,復(fù)制一個(gè)新的房間(動(dòng)態(tài)代碼生成一個(gè)類,這個(gè)類繼承1中的實(shí)體,并且重寫了屬性的set方法)

  這個(gè)過程就設(shè)計(jì)到動(dòng)態(tài)代碼的生成了。

//首先創(chuàng)建一個(gè)與實(shí)體類對應(yīng)的動(dòng)態(tài)類
CodeTypeDeclaration ct = new CodeTypeDeclaration(btItem.Name + "_Dynamic");
//循環(huán)實(shí)體中的所有標(biāo)記為virtual的屬性
foreach (PropertyInfo fiItem in properties)
{
	//創(chuàng)建一個(gè)屬性
	var p = new CodeMemberProperty();
	//設(shè)置屬性為公共、重寫
	p.Attributes = MemberAttributes.Public | MemberAttributes.Override;//override
	//設(shè)置屬性的類型為繼承的屬性的數(shù)據(jù)類型
	p.Type = new CodeTypeReference(fiItem.PropertyType);
	//屬性名稱與繼承的一致
	p.Name = fiItem.Name;
	//包含set代碼
	p.HasSet = true;
	//包含get代碼
	p.HasGet = true;
	//設(shè)置get代碼
	//return base.Account
	p.GetStatements.Add(new CodeMethodReturnStatement(
                new CodeFieldReferenceExpression(
                        new CodeBaseReferenceExpression(), fiItem.Name)));
	//設(shè)置set代碼
	//base.Account=value;
	p.SetStatements.Add(
	new CodeAssignStatement(
                new CodeFieldReferenceExpression(
                        new CodeBaseReferenceExpression(), fiItem.Name),
	new CodePropertySetValueReferenceExpression()));
	//FieldTracking["Account"]=value;
	p.SetStatements.Add(new CodeSnippetExpression("FieldTracking["" + fiItem.Name + ""] = value"));
	//將屬性添加到類中
	ct.Members.Add(p);
}

  3、將剛才生成的類加到原類所在的命名空間+".Dynamic"(加后綴以示區(qū)分)

//聲明一個(gè)命名空間(與當(dāng)前實(shí)體類同名+后綴)
CodeNamespace ns = new CodeNamespace(btItem.Namespace + ".Dynamic");
ns.Types.Add(ct);

  4、編輯生成代碼所在的程序集

    //要?jiǎng)討B(tài)生成代碼的程序集
    CodeCompileUnit program = new CodeCompileUnit();
    //添加引用
    program.ReferencedAssemblies.Add("mscorlib.dll");
    program.ReferencedAssemblies.Add("System.dll");
    program.ReferencedAssemblies.Add("System.Core.dll");

    //定義代碼工廠
    CSharpCodeProvider provider = new CSharpCodeProvider();
    //編譯程序集
    var cr = provider.CompileAssemblyFromDom(new System.CodeDom.Compiler.CompilerParameters();
    //看編譯是否通過
    var error = cr.Errors;
    if (error.HasErrors)
    {
        Console.WriteLine("錯(cuò)誤列表:");
        //編譯不通過
        foreach (dynamic item in error)
        {
            Console.WriteLine("ErrorNumber:{0};Line:{1};ErrorText{2}",
                item.ErrorNumber,
                item.Line, 
                item.ErrorText);
        }
        return;
    }
    else
    {
        Console.WriteLine("編譯成功。");
    }

  查看生成的代碼

//查看生成的代碼
var codeText = new StringBuilder();
using (var codeWriter = new StringWriter(codeText))
{
    CodeDomProvider.CreateProvider("CSharp").GenerateCodeFromNamespace(ns,
        codeWriter,
        new CodeGeneratorOptions()
        {
            BlankLinesBetweenMembers = true
        });
}
Console.WriteLine(codeText);

  5、將復(fù)制的新類與原類建立映射關(guān)系。

foreach (Type item in ts)
{
    //注冊(模擬實(shí)現(xiàn),通過字典實(shí)現(xiàn)的,也可以通過IOC注入方式處理)
    Mapping.Map(item.BaseType, item);
}

  6、獲得這個(gè)復(fù)制的實(shí)體對象

//創(chuàng)建一個(gè)指定的實(shí)體對象
AccountEntity ae = Mapping.GetMap<AccountEntity>();

  7、對這個(gè)實(shí)體對象的屬性進(jìn)行賦值

//主鍵賦值不會(huì)修改屬性更新
ae.BaseEntity_Id = 1;//不會(huì)變(未標(biāo)記為virtual)
ae.MainEntity_Name = "大花貓";
ae.MainEntity_UpdateTime = DateTime.Now;
//修改某個(gè)屬性
ae.Account = "admin";
ae.Account = "以最后一次的修改為準(zhǔn)";

  8、調(diào)用底層方法,底層根據(jù)這個(gè)實(shí)體屬性獲得被修改的屬性名稱

//調(diào)用基類中的方法 獲取變動(dòng)的屬性
var up = ae.GetFieldTracking();
Console.WriteLine("有修改的字段:");
up.ForEach(fe =>
{
    Console.WriteLine(fe + ":" + ae[fe]);
});

  9、完美

  

  就這樣,在底層就能知道哪些實(shí)體被賦值過了。

  當(dāng)然,有些實(shí)體我們只是需要用來計(jì)算,則可以調(diào)用方法將賦值過的屬性進(jìn)行刪除

//刪除變更字段
ae.RemoveChanges("Account");

  這只是一個(gè)簡單的實(shí)現(xiàn),還有一種比較復(fù)雜的情況,在第6步,獲得這個(gè)復(fù)制的實(shí)體對象時(shí),怎么用一個(gè)現(xiàn)有的new出來的實(shí)體對象去創(chuàng)建建并監(jiān)控呢。就像,別人送我一房間現(xiàn)成的玩具,給我的時(shí)候貓就在里面玩了。嗷,把貓打死吧。

  總結(jié):

再次認(rèn)識(shí)到反射的強(qiáng)大。
也第一次實(shí)現(xiàn)了代碼生成代碼并使用的經(jīng)歷。
對字段和屬性的區(qū)別有了更深的認(rèn)識(shí)。
對訪問修飾符和虛virtual方法有了更好的認(rèn)識(shí)。

  本文僅供參考,如果你能通過閱讀本文解決你的問題或能學(xué)到點(diǎn)什么那就更好了。

  源代碼被貓吃了,被貓吃了……

郵箱:sj_china#126.com

QQ:407005204

夢里花落似雪花,月掛當(dāng)空滿地撒。飄舞飛揚(yáng)漸欲墜,凌凌落落到誰家。

總結(jié)

以上是生活随笔為你收集整理的C#监控类属性的更改(大花猫动了哪些小玩具)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

美州a亚洲一视本频v色道 | 欧美日韩不卡一区 | 狠狠插狠狠操 | 久久久免费| 玖玖玖精品 | 亚洲一区精品人人爽人人躁 | 91porny九色在线播放 | 日韩黄色在线观看 | 成人黄色小说在线观看 | 成人一级免费视频 | 亚洲精品在线免费播放 | 一区二区三区日韩精品 | 狠狠操操操 | 久久,天天综合 | 亚洲精品在线网站 | 国产黄色av | 最新久久久 | 午夜久久福利影院 | 中文字幕在线观看视频一区二区三区 | 久久久蜜桃 | 亚州精品天堂中文字幕 | 欧洲高潮三级做爰 | 色www永久免费| 色先锋av资源中文字幕 | 久久综合国产伦精品免费 | 日韩高清一区在线 | 欧美成天堂网地址 | 欧美日在线观看 | 国产精品s色 | 在线看日韩av | 91视视频在线直接观看在线看网页在线看 | 在线成人国产 | 国产字幕在线看 | 大型av综合网站 | www欧美xxxx| 在线播放av网址 | 久久99精品久久久久久清纯直播 | 国产偷v国产偷∨精品视频 在线草 | 日日噜噜噜噜夜夜爽亚洲精品 | 成年人免费在线看 | 亚洲日本韩国一区二区 | 一区二区精品视频 | 中日韩三级视频 | 色多多视频在线观看 | 亚洲视频专区在线 | 日本久久影视 | 久久久久在线观看 | 91丨九色丨蝌蚪丨对白 | 成人黄色国产 | 亚洲精品美女久久 | 超碰午夜 | 91最新在线视频 | 韩国av免费 | 日韩中文字幕免费电影 | 黄色免费高清视频 | 亚洲日本黄色 | 欧美一区二区三区免费看 | 五月婷婷在线视频观看 | 免费欧美 | 欧美日韩亚洲第一 | 少妇搡bbb | 中文字幕乱偷在线 | 男女免费av| 91福利专区 | 国产精品欧美久久久久久 | 日韩高清免费电影 | 欧美日韩视频一区二区三区 | 2023亚洲精品国偷拍自产在线 | 精品久久影院 | 欧美极品在线播放 | 国产成人精品在线 | 亚洲日本va中文字幕 | 国产成人在线免费观看 | 国产在线色站 | 久久久国产一区二区三区四区小说 | 国产一级在线视频 | 中文资源在线观看 | 国产电影一区二区三区四区 | 在线看91| 成人在线视频在线观看 | 中文字幕乱码电影 | 国产高清不卡av | 黄色视屏在线免费观看 | 亚洲精品中文字幕在线观看 | 91在线免费观看网站 | 国产精品自拍av | 国产乱码精品一区二区蜜臀 | 免费a v网站 | 国内一级片在线观看 | 麻豆国产电影 | 国产午夜在线观看 | 天天操天天舔天天爽 | 久草资源在线 | 波多野结衣精品 | 97成人超碰 | 亚洲天天摸日日摸天天欢 | 亚洲国产精品久久久 | 亚洲精品国产视频 | 免费av在| 97精产国品一二三产区在线 | 美女视频久久久 | 国产成人福利在线观看 | 精品无人国产偷自产在线 | 亚洲精品网页 | 丁香综合av| 97涩涩视频 | 涩涩伊人 | 四虎www com| 日韩在线观看一区二区三区 | 免费无遮挡动漫网站 | 色综合久久综合网 | av日韩在线网站 | 久草视频99 | 欧美国产日韩一区二区三区 | 日韩理论视频 | 国产精品99久久久久 | 99人成在线观看视频 | 国产精品18久久久久久久 | 激情伊人| 国产va饥渴难耐女保洁员在线观看 | 伊人成人精品 | 日本中文乱码卡一卡二新区 | 狠狠干夜夜操天天爽 | 婷婷在线免费观看 | 国产不卡视频在线 | 欧美孕妇视频 | 国产一级片免费观看 | 在线观看国产 | 最近中文字幕高清字幕在线视频 | 91九色最新 | 国产激情电影综合在线看 | 91在线精品秘密一区二区 | 五月综合在线观看 | 黄色成人在线 | 日韩va亚洲va欧美va久久 | 国产一二区在线观看 | 亚洲精品乱码久久久久久按摩 | 日本中文一级片 | 日本久久久久久科技有限公司 | 久久久久久久久网站 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 福利av影院 | 久久精品日产第一区二区三区乱码 | 国产综合视频在线观看 | 黄色1级大片 | 国产成人在线免费观看 | 在线看日韩 | 狠狠狠干| 久久久久久久久久亚洲精品 | 91在线视频免费播放 | 久久久久久久久久久久久久免费看 | 欧美激情xxxx性bbbb | www.久久精品视频 | 黄网站污 | 国产亚洲一区二区在线观看 | 亚洲国产精品一区二区尤物区 | 色婷婷精品大在线视频 | 77国产精品| 九九九九九九精品任你躁 | 久久综合狠狠狠色97 | 又爽又黄又刺激的视频 | 国产精品精品视频 | 在线91观看 | www色,com| 日韩在线观看视频中文字幕 | 天天干天天在线 | 97av精品| 美女在线观看av | 日本一区二区三区免费看 | 久久综合婷婷综合 | 狠狠激情中文字幕 | 欧洲精品久久久久毛片完整版 | 最近更新中文字幕 | 狠狠干在线播放 | 中文字幕资源在线 | 人人揉人人揉人人揉人人揉97 | 91中文字幕永久在线 | 国产午夜视频在线观看 | 日韩欧美一区二区三区在线观看 | 在线观看不卡视频 | 久久久福利 | 精品久久久久久亚洲综合网 | 久久精品这里都是精品 | 国产色黄网站 | 久久久久久久久国产 | 亚洲一级久久 | 亚洲综合在线五月 | 在线观看中文字幕第一页 | 在线免费视频你懂的 | 久久久久激情视频 | 91精品国产综合久久福利不卡 | 国产毛片久久 | 中文字幕av在线电影 | 欧美日本啪啪无遮挡网站 | 久久这里只有精品视频首页 | 欧美日本在线观看视频 | 欧洲av在线| 精品久久久久久亚洲 | 综合色综合 | 欧美性极品xxxx做受 | 国产专区视频 | 天天爽天天爽夜夜爽 | 日韩理论电影在线观看 | 日本黄色a级大片 | 9免费视频| 国产精品免费不卡 | 亚洲综合导航 | 97国产在线观看 | 国内精品久久久久久中文字幕 | 国产91综合一区在线观看 | 黄色在线看网站 | 久久99免费视频 | 免费视频一二三 | 在线观看一区视频 | 丁香花中文字幕 | 韩国视频一区二区三区 | 欧美精品做受xxx性少妇 | 在线观看国产区 | 国产欧美久久久精品影院 | 欧美一区二区伦理片 | 欧美久久精品 | av网站地址| 91福利社在线观看 | 国产又粗又硬又长又爽的视频 | 精品美女视频 | 综合色综合色 | 91福利试看 | 91九色精品女同系列 | 夜夜天天干 | 99久久精品国产系列 | 曰本三级在线 | 天天操天天舔天天爽 | 激情 婷婷| mm1313亚洲精品国产 | 蜜桃传媒一区二区 | 97电影院在线观看 | 丁香激情网| 久久久久久久久艹 | 久久久久久久久久久久亚洲 | 免费h漫在线观看 | 91精品在线播放 | 黄色高清视频在线观看 | 日韩在线精品视频 | 中文字幕av全部资源www中文字幕在线观看 | 最近在线中文字幕 | 超碰国产在线播放 | 日韩视频免费播放 | 久久精品欧美视频 | 国产精品免费观看视频 | 91成版人在线观看入口 | 碰超在线97人人 | 日韩免费一区二区三区 | 91福利在线导航 | 天天爱天天操天天爽 | 麻豆传媒视频观看 | 国产自产高清不卡 | 亚洲三级av | 国产一区二区电影在线观看 | 亚洲美女在线一区 | 久久人人爽人人片 | 黄色免费高清视频 | 日韩精品一区二区三区水蜜桃 | 成人免费在线电影 | 成人丝袜 | 欧美一级视频一区 | 色在线亚洲 | 久久精品99国产国产 | 99精品视频在线观看播放 | 亚洲在线不卡 | 亚洲视频综合 | 国产精品一区二区在线播放 | 久草色在线观看 | 91日韩精品一区 | 国产成人a亚洲精品v | 久久久国产精品人人片99精片欧美一 | 草久久久 | 免费高清在线视频一区· | 亚洲国产精品推荐 | 国产亚洲精品久久久久久久久久 | 97视频一区 | 亚洲,国产成人av | 日韩欧美在线一区二区 | 色鬼综合网 | 国产五十路毛片 | 国产毛片久久 | 亚洲精品午夜久久久 | 808电影 | 国产精选在线 | 91高清不卡| 国产天天爽 | 国产精品永久在线 | 久久久99国产精品免费 | 久久精品成人欧美大片古装 | 婷婷久久国产 | 在线中文字幕一区二区 | 丁香婷婷色 | 欧美激情精品久久久久久免费 | 97超碰免费| 国产特级毛片aaaaaa毛片 | 成人一级在线 | 一区二区网 | 高清在线观看av | 免费观看一级视频 | av中文字幕在线观看网站 | 99精品系列 | 成人av在线直播 | 久久精品欧美一区 | 丁香婷婷色月天 | 色的网站在线观看 | 丁香花在线观看免费完整版视频 | 免费av视屏 | 日韩午夜小视频 | 视频一区二区在线 | 亚洲欧美日韩国产一区二区 | 日韩在线免费观看视频 | 深爱激情五月综合 | 亚州精品一二三区 | 久久91久久久久麻豆精品 | 亚洲一二三区精品 | 国产成人精品电影久久久 | 午夜手机电影 | 欧美日韩在线视频一区二区 | 久久超碰免费 | 国产免码va在线观看免费 | 黄色avwww| 亚洲国产成人高清精品 | 欧美精品一区二区在线播放 | 精品久久久久一区二区国产 | 黄色一级大片在线免费看国产一 | 欧美性做爰猛烈叫床潮 | 亚洲日本韩国一区二区 | 久久国产精彩视频 | 欧美日韩国产综合网 | 欧美va天堂在线电影 | 久久99亚洲网美利坚合众国 | 日三级在线 | 色综合网 | 97视频入口免费观看 | 国产精品麻豆果冻传媒在线播放 | 国产精品一区二区免费视频 | 亚洲黄色网络 | 黄色特级一级片 | 制服丝袜成人在线 | 99r在线观看| 成人蜜桃网 | 在线观看a视频 | 超碰97国产 | 成人午夜片av在线看 | 午夜精品成人一区二区三区 | 日韩精品在线播放 | 久久久 激情| 午夜精品一二三区 | 国产精品免费一区二区三区 | 日本在线观看一区 | 亚洲精品麻豆 | 麻豆一二三精选视频 | 久久一区二区三区四区 | 亚洲午夜精品久久久久久久久 | 日韩电影在线一区 | 欧美激情第八页 | 国产一区二区综合 | 天天操伊人 | 久久综合久色欧美综合狠狠 | a在线观看免费视频 | 91av99| 日本三级香港三级人妇99 | 黄色的视频 | 国产成人av| 久久久免费观看 | 日韩欧美在线综合网 | 亚洲第一中文字幕 | www.色婷婷 | 国产成人在线播放 | 视频一区二区精品 | 国产99在线免费 | 国产一区二区免费看 | 国产高清福利在线 | 亚洲小视频在线 | av中文字幕在线播放 | 免费观看成年人视频 | 一区二区视频欧美 | 9992tv成人免费看片 | 日本最新一区二区三区 | 国产高清av在线播放 | 国产一级一级国产 | www麻豆视频 | 亚洲国产97在线精品一区 | 日韩中文字幕91 | 国产v在线观看 | 一区二区三区在线播放 | 国产精品久久久久久久久久ktv | 国产精品 日韩精品 | 久久久久免费网 | 99精品视频免费在线观看 | 18做爰免费视频网站 | 久久国产日韩 | 91大神一区二区三区 | 色人久久| 成人97人人超碰人人99 | 欧美久久精品 | 中文字幕 影院 | 国产精品青草综合久久久久99 | 久久综合久久综合这里只有精品 | 国产偷国产偷亚洲清高 | 日本黄区免费视频观看 | 国产伦理久久精品久久久久_ | 久久久一本精品99久久精品66 | 欧美色综合天天久久综合精品 | 日韩视频在线观看视频 | 欧美日韩国产综合网 | 国产又粗又猛又爽 | 91高清完整版在线观看 | av在线专区 | 青草视频在线播放 | 天天艹天天干天天 | 亚洲专区路线二 | 国产欧美最新羞羞视频在线观看 | 在线看片91 | 婷婷激情小说网 | 四虎影视成人永久免费观看亚洲欧美 | 欧美视频国产视频 | 国产v欧美| 日韩高清免费无专码区 | 欧美孕交vivoestv另类 | 婷婷激情av | 亚洲精品欧美精品 | 国产精品久久精品 | 女人18片毛片90分钟 | 久草影视在线观看 | 992tv在线 | 精品99在线 | 91精品第一页 | 国产午夜免费视频 | 欧美在线视频不卡 | 色综合在 | 韩国一区二区三区视频 | 日韩大片在线播放 | 在线日本看片免费人成视久网 | 午夜丁香网| 亚洲精品国产品国语在线 | 2019天天干夜夜操 | av大全在线看 | 精品国内自产拍在线观看视频 | 综合久久久久久 | 国产又粗又硬又爽视频 | 国产1区在线 | 久久的色 | 欧美日韩后 | 天天射天天操天天干 | 在线视频精品播放 | 久久成年人视频 | 天天拍天天操 | 日韩在线观看中文字幕 | 天天操天天爱天天干 | 97超碰免费| 91久久精品一区 | 在线免费观看视频一区二区三区 | 久久久亚洲国产精品麻豆综合天堂 | 欧美一区二区在线刺激视频 | 四虎影视成人 | 国产精品 久久 | 亚洲欧美视频在线观看 | 胖bbbb搡bbbb擦bbbb | 日韩欧美高清不卡 | 五月天久久激情 | 六月天色婷婷 | 狠狠色狠狠色综合日日92 | 亚洲 欧美 变态 国产 另类 | 天天躁天天躁天天躁婷 | 手机av在线网站 | 在线观看片 | 国产99精品在线观看 | 日韩高清免费在线观看 | 国际精品久久久久 | 在线观看免费成人av | 亚洲欧洲国产精品 | 欧美日韩国产精品一区二区 | 亚洲综合在线五月天 | 日韩午夜在线观看 | 久久久久久久久久久综合 | 免费色视频在线 | 久草在线免费新视频 | 99久久99 | 在线观看视频一区二区三区 | 欧美日韩一区二区视频在线观看 | 亚洲va欧美va人人爽 | 欧美日韩不卡一区 | 成人h视频在线播放 | 啪啪资源 | www.日本色| 欧美日韩aa | 2019久久精品| 中文字幕久久久精品 | 91高清免费在线观看 | 91精品视频免费观看 | 婷婷国产一区二区三区 | 国产欧美日韩精品一区二区免费 | 一级一片免费看 | 久草青青在线观看 | 极品美女被弄高潮视频网站 | 国产福利免费在线观看 | 免费高清av在线看 | 97国产| 国产99久久久精品视频 | 亚洲精品久久久久久久不卡四虎 | 999久久久免费视频 午夜国产在线观看 | 黄色成人小视频 | 色婷婷导航 | av一区二区三区在线 | 欧美精品视 | a在线观看免费视频 | 综合色综合色 | 国产真实精品久久二三区 | 日韩精品在线观看视频 | 美女网站视频免费黄 | 欧美激情第八页 | 91精品视频在线免费观看 | 欧美另类重口 | 亚州国产精品 | 一本一道久久a久久精品蜜桃 | 麻豆 videos| 97夜夜澡人人双人人人喊 | 成人动漫一区二区 | 三级黄色免费片 | 日韩精品视频在线观看免费 | 91伊人久久大香线蕉蜜芽人口 | 日韩在线视频观看免费 | 最新中文字幕在线播放 | 国产精品成久久久久 | av电影免费在线看 | 国产精品精品久久久久久 | 久艹在线观看视频 | 丁香色婷 | 中文永久字幕 | 国内精品毛片 | 国产小视频你懂的 | 福利电影一区二区 | 9ⅰ精品久久久久久久久中文字幕 | 国产丝袜美腿在线 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 天堂网av 在线 | 色综合天天天天做夜夜夜夜做 | 日日操天天爽 | 欧美超碰在线 | 97av在线| 色网站黄 | www.黄色 | 久久久久久激情 | 97免费视频在线 | 五月婷丁香网 | 亚洲精品456在线播放第一页 | 久草在线视频免费资源观看 | 欧美成人黄色 | 青青视频一区 | 日韩一区二区三区不卡 | 亚洲精品视频在 | 91av网站在线观看 | 99久久久久久久久久 | 免费精品在线视频 | 91精品对白一区国产伦 | 久草影视在线观看 | a电影在线观看 | 欧美精品中文在线免费观看 | 最新中文字幕在线播放 | 国产成人av片 | 亚洲高清精品在线 | 国产成人精品一区二区三区在线 | 视频二区在线 | 97超碰人人澡人人爱学生 | 91视视频在线直接观看在线看网页在线看 | 视频一区二区国产 | 国产精品高清在线观看 | 99久久免费看 | 免费成人在线视频网站 | 最新国产精品视频 | 亚洲精品一区二区三区在线观看 | 精品专区| 久久久久久国产精品久久 | 在线天堂中文在线资源网 | 成人欧美在线 | 91精品在线免费观看视频 | 国产99久久精品 | 99精品国产免费久久 | 日韩xxx视频 | 成人性生交大片免费观看网站 | 欧美一级在线看 | www.色爱 | 精品日韩中文字幕 | 视频91在线 | 91麻豆看国产在线紧急地址 | 久草精品视频在线观看 | 亚洲精品久久久久www | 亚洲高清av在线 | 国产综合精品久久 | av大全在线播放 | 国产精品手机视频 | 成人a级大片 | 国产中文欧美日韩在线 | 成人一级影视 | 日韩大片免费观看 | 日韩美av在线 | 97福利| 亚洲理论在线观看 | 最新色视频 | 97人人添人澡人人爽超碰动图 | 99re6热在线精品视频 | 日韩精品一卡 | 久久字幕 | 福利一区在线 | 日韩免费一区二区 | 色丁香久久 | 午夜国产福利视频 | 欧美一级艳片视频免费观看 | 国内精品久久影院 | 97视频免费在线 | 免费看日韩片 | 爱av在线网| 日本视频不卡 | 超碰在线个人 | 国产一区二区在线免费播放 | 6080yy午夜一二三区久久 | 国产一区 在线播放 | 欧美男男激情videos | 伊在线视频 | 欧美男同网站 | 亚洲免费精彩视频 | 韩日色视频 | 日韩av在线看 | 欧美日韩99| 4hu视频 | 国产精品久久99综合免费观看尤物 | 国产一二区在线观看 | 激情欧美xxxx| 99久久精品国产亚洲 | 中文在线免费一区三区 | 操操色| 国产成人免费在线观看 | 国产精品久久久久久久久搜平片 | 成人免费视频视频在线观看 免费 | 五月婷婷亚洲 | 中文字幕在 | 黄色免费视频在线观看 | 欧美a√大片 | 国内综合精品午夜久久资源 | 91看片网址 | 蜜桃视频在线视频 | av在线看片 | 黄色国产在线观看 | 国产伦精品一区二区三区免费 | 91丨九色丨蝌蚪丨对白 | 成人黄色电影免费观看 | 久久人人爽人人爽人人片av软件 | 日韩精品免费在线视频 | 丁香五婷 | 欧美一级性生活片 | 亚洲传媒在线 | 激情在线五月天 | 色5月婷婷| av在线a | 久久久久久久久久久国产精品 | 国产成人精品一区二区三区福利 | 亚洲精品色 | 天天干天天操天天拍 | 中文字幕二区在线观看 | 成年人网站免费观看 | 丁香婷婷深情五月亚洲 | 日本中文字幕在线一区 | 国产精品资源在线观看 | 国产一级性生活视频 | 99热手机在线观看 | 欧美精品免费视频 | 国产婷婷色 | 成人黄色免费观看 | 色在线视频网 | 亚洲国产精品第一区二区 | 天天射天天搞 | 91网在线看| 就要色综合 | 天堂av一区二区 | 日韩免费在线看 | 国偷自产视频一区二区久 | 成年人电影毛片 | 久久国产精品视频观看 | 精品视频在线免费 | av资源在线观看 | 蜜桃视频日本 | 五月婷婷黄色网 | 91手机视频 | 久久精品视频在线观看 | 国产免费黄色 | 亚洲成 人精品 | 色综合激情网 | 中文字幕乱码日本亚洲一区二区 | 国产精品自产拍 | 丁香六月欧美 | 色婷丁香| 91高清免费观看 | 久久视频在线观看免费 | 久久免费视频精品 | 久久久在线免费观看 | 一本一道波多野毛片中文在线 | 久草在线一免费新视频 | 亚洲精品在 | 日韩免费av网址 | 日本黄色片一区二区 | 天堂资源在线观看视频 | 欧美一区二区精品在线 | 色婷婷狠狠操 | 亚洲欧美精品一区 | 69精品人人人人 | 久久美女电影 | 在线观看色视频 | 日本中文字幕网 | 国产中文字幕视频在线观看 | 久久国产精品99国产 | 在线一二三四区 | 天天草天天干 | 久要激情网 | 91手机视频在线 | 99精品系列 | 91久久精品日日躁夜夜躁国产 | av电影av在线 | 免费看日韩片 | 国产高清在线视频 | 午夜视频一区二区三区 | 午夜美女福利 | 国产黄av | 免费看的黄色录像 | 久草久草视频 | 久久美女免费视频 | 久久艹国产视频 | 精品国产色 | 免费不卡中文字幕视频 | 97看片吧 | 亚洲视频中文 | 成人理论电影 | 黄色毛片视频免费 | av免费试看 | 在线91精品 | www.香蕉 | 97在线影视 | 亚洲国产97在线精品一区 | 久久亚洲美女 | 久久久久久久网 | 福利视频导航网址 | 日韩久久久久久久久久久久 | 欧美午夜性 | 午夜性生活 | 国产精品免费小视频 | 国产精品久久久久久久久久免费 | 中文字幕av有码 | 成人av在线电影 | 国产精品久久久久久久久久免费看 | 97超碰在线久草超碰在线观看 | 又色又爽又黄 | 国产一区网| 成 人 黄 色 片 在线播放 | 日韩视频在线不卡 | 中文国产在线观看 | 日韩欧美99| 在线日韩一区 | 最近中文字幕国语免费av | 日韩av在线看 | 就要干b | 999久久国产精品免费观看网站 | 国产大片免费久久 | 九九热精品视频在线播放 | 伊人六月 | 免费国产黄线在线观看视频 | 国产精品美女久久久久久 | 99精品免费久久久久久日本 | 成人黄性视频 | 国产精久久久久久妇女av | 91丨九色丨首页 | 高清精品视频 | 亚洲精品在线资源 | 青青河边草免费观看完整版高清 | 久久9999久久免费精品国产 | 亚洲久久视频 | 久久免费精品一区二区三区 | 亚洲在线视频免费观看 | 日日摸日日爽 | 不卡中文字幕在线 | 亚洲第一成网站 | 国产精品乱码在线 | 丰满少妇对白在线偷拍 | www.com黄色| 中文字幕成人在线观看 | 国产欧美日韩视频 | 97热久久免费频精品99 | 日韩中文字幕在线看 | 韩日精品在线观看 | 日韩av高清在线观看 | 日韩欧美视频免费看 | 色婷婷av国产精品 | 99热最新精品| 国产一区免费观看 | 91精品久久久久久久久久入口 | 天天干天天天 | 国产成人久久av | 毛片一级免费一级 | 一区二区三区在线免费播放 | 欧美人交a欧美精品 | 久久久免费精品 | 午夜精品一区二区三区在线 | 天天干,天天射,天天操,天天摸 | 日韩区欠美精品av视频 | 国产婷婷在线观看 | 在线观看黄色国产 | 日韩精品欧美精品 | 久久久国产精品久久久 | 999国产在线 | 丁香花在线视频观看免费 | 久久久精品欧美一区二区免费 | 五月婷在线 | 久久午夜国产精品 | 婷婷丁香七月 | 免费精品视频在线观看 | 日韩高清在线观看 | 久久一线| 丁香婷婷色 | 国产1级视频| 亚洲精品一区二区三区四区高清 | 日韩va欧美va亚洲va久久 | 免费成人黄色片 | 丁香亚洲 | 国产一二区精品 | 国产高清一级 | 玖玖在线免费视频 | 午夜三级福利 | 成人精品视频久久久久 | 亚洲成人精品影院 | 国产999免费视频 | 国内精品久久天天躁人人爽 | 日韩精品一区二区在线 | 特级毛片在线 | 911亚洲精品第一 | 国产成人精品综合久久久 | 最新av在线免费观看 | 精品国产乱码久久久久 | av在线中文| 成人av片免费观看app下载 | 精品在线视频观看 | 国产视频亚洲视频 | 色婷婷综合在线 | www天天干 | 开心激情网五月天 | 国产高清视频网 | 一区中文字幕在线观看 | 国模视频一区二区三区 | 日韩在线一区二区免费 | 久久久久美女 | 91av资源在线 | 在线观看91网站 | 亚洲影视九九影院在线观看 | 国产精品视频全国免费观看 | 日韩理论视频 | 一本一本久久a久久 | 六月色婷| 久久伊人色综合 | 久草视频在线免费看 | 天天做日日做天天爽视频免费 | 国产h片在线观看 | 九色精品免费永久在线 | 天天操天天舔天天干 | 在线观看福利网站 | 成人动漫一区二区三区 | 亚洲乱亚洲乱亚洲 | 免费一级日韩欧美性大片 | 九九在线免费视频 | 日本一区二区三区免费观看 | 夜夜视频欧洲 | 亚洲人在线视频 | 国产精品自产拍在线观看蜜 | 中文字幕 婷婷 | 亚洲电影院 | 在线免费国产 | 亚洲热视频 | 91黄色小网站 | 中文国产在线观看 | 男女视频91| 91九色国产 | 日p在线观看 | 91av社区| 日本久久久亚洲精品 | 成人精品久久久 | 久久久久久久影视 | 亚洲春色成人 | 国产麻豆精品久久一二三 | 国产精品九九热 | 精品在线播放视频 | 91亚洲精品国偷拍 | 日日夜夜天天久久 | 日本中文字幕视频 | 亚洲午夜电影网 | 久草视频在线免费看 | 中日韩在线| 国产精品99久久久久久人免费 | 日日夜夜91 | www.夜夜操.com | 99视频黄 | 色综合天天视频在线观看 | 热久久99这里有精品 | 九色激情网 | 国产精品亚洲a | 黄色影院在线免费观看 | 国产精品成人av电影 | 最近高清中文字幕在线国语5 | 81国产精品久久久久久久久久 | 亚洲欧洲国产视频 | 欧美视频日韩 | 99视频免费看 | 免费黄色特级片 | 久久成人国产精品免费软件 | 色欧美成人精品a∨在线观看 | 国产精品va在线播放 | 亚洲综合视频在线观看 | 欧美在线视频a | 一区二区伦理电影 | 五月婷影院| 久久草草热国产精品直播 | 国产亚洲一级高清 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久国产精品区 | 国产老妇av | 狠狠色网 | 亚洲一级电影视频 | 国产999精品久久久 免费a网站 | 精品久久久久久亚洲综合网站 | 久久一区二区三区四区 | 久久不色| 中文字幕中文字幕在线中文字幕三区 | 久久久久久久久综合 | 91在线日韩 | 亚洲日韩精品欧美一区二区 | 久久精品一区二区国产 | 久久久久久综合网天天 | 一区在线电影 | av丝袜天堂 | 亚洲a网| 天天综合网在线观看 | 亚洲成人xxx | 成人h电影 | 日韩大片在线观看 | 亚洲欧美在线观看视频 | 国产原创中文在线 | 成人久久视频 | 午夜国产一区 | 免费观看www视频 | 四虎免费av| 视频在线播放国产 | 亚洲精品一区二区18漫画 | 亚洲免费国产 | 午夜影院先| 久久资源在线 | 日韩欧美专区 | 欧美a级成人淫片免费看 | 九九视频免费在线观看 | 美女av电影| 日日躁你夜夜躁你av蜜 | 五月色婷 | 日韩网站在线看片你懂的 | 国产麻豆视频网站 | 国产视频 亚洲精品 | 国产a网站| 日韩电影中文字幕在线观看 | 在线观看91久久久久久 | 国产成人一二三 | 九九视频热 | 日韩精品欧美一区 | 色干综合 | 久久精品系列 | 狠狠色狠狠色综合日日小说 | 美女久久久久 | 久久久国产电影 | 91福利视频在线 | 日日草av | 国产精品久久久久久爽爽爽 | 五月婷婷六月丁香激情 | 国产高清在线免费视频 | 黄色一级在线视频 | www.天天成人国产电影 | 欧美a级免费视频 | 国内精品久久久久久久久久久久 | 精品国产自 | 视频一区二区精品 | 99久久电影 | 久久久www成人免费毛片麻豆 | 亚洲精品国产精品国自产观看 | 18网站在线观看 | 久要激情网 | 国产一区二区不卡在线 | 91精品色| 国产精品视频久久 | 人人擦 | 久久免费的视频 | 五月婷婷综合在线视频 | 日本亚洲国产 |