3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

sql注入pythonpoco_.NET EF(Entity Framework)详解

發布時間:2023/12/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql注入pythonpoco_.NET EF(Entity Framework)详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一丶Entity Framework

(一)EF簡介

(1)ORM:Object Relation Mapping ,通俗說:用操作對象的方式來操作數據庫。

(2)插入數據庫不再是執行Insert,而是類似于Person p = new Person();p.Age=3;p.Name=“英萊特”;db.Save§;這樣的做法。

(3)ORM工具有很多Dapper、PetaPoco、NHibernate,最首推的還是微軟官方的Entity Framework,簡稱EF。

(4)EF底層仍然是對ADO.Net的封裝。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流數據庫。

(5)使用EF進行數據庫開發的時候有兩個東西建:建數據庫(T_Persons),建模型類(Person)。根據這兩種創建的先后順序有EF的三種創建方法:

DataBase First(數據庫優先):先創建數據庫表,然后自動生成EDM文件,EDM文件生成模型類。簡單展示一下DataBase First 的使用。

Model First(模型優先):先創建Edm文件,Edm文件自動生成模型類和數據庫;

Code First(代碼優先):程序員自己寫模型類,然后自動生成數據庫。沒有Edm。

DataBase First 簡單、方便,但是當項目大了之后會非常痛苦;

Code First 入門門檻高,但是適合于大項目。

Model First……

無論哪種First,一旦創建好了數據庫、模型類之后,后面的用法都是一樣的。業界都是推薦使用Code First,新版的EF中只支持Code First,因此我們這里只講Code First。

(6)Code First的微軟的推薦用法是程序員只寫模型類,數據庫由EF 幫我們生成,當修改模型類之后,EF 使用“DB Migration”自動幫我們更改數據庫。但是這種做法太激進,不適合很多大項目的開發流程和優化,只適合于項目的初始開發階段。Java的Hibernate 中也有類似的DDL2SQL 技術,但是也是用的較少?!癉B Migration”也不利于理解EF,因此在初學階段,我們將會禁用“DB Migration”,采用更實際的“手動建數據庫和模型類”的方式。

(7)如果大家用過 NHibernate 等ORM 工具的話,會發現開發過程特別麻煩,需要在配置文件中指定模型類屬性和數據庫字段的對應關系,哪怕名字完全也一樣也要手動配置。使用過Java 中Struts、Spring 等技術的同學也有過類似“配置文件地獄”的感覺。 像ASP.Net MVC 一樣,EF 也是采用“約定大于配置”這樣的框架設計原則,省去了很多配置,能用約定就不要自己配置。

在.Net Framework SP1微軟包含一個實體框架(Entity Framework),此框架可以理解成微軟的一個ORM產品。用于支持開發人員通過對概念性應用程序模型編程(而不是直接對關系存儲架構編程)來創建數據訪問應用程序。目標是降低面向數據的應用程序所需的代碼量并減輕維護工作。

(二)Entity Framework應用程序有以下優點:

(1)應用程序可以通過更加以應用程序為中心的概念性模型(包括具有繼承性、復雜成員和關系的類型)來工作。

(2)應用程序不再對特定的數據引擎或存儲架構具有硬編碼依賴性。

(3)可以在不更改應用程序代碼的情況下更改概念性模型與特定于存儲的架構之間的映射。

(4)開發人員可以使用可映射到各種存儲架構(可能在不同的數據庫管理系統中實現)的一致的應用程序對象模型。

(5)多個概念性模型可以映射到同一個存儲架構。

(6)語言集成查詢支持可為查詢提供針對概念性模型的編譯時語法驗證。

實體框架Entity Framework是 DO.NET中的一組支持開發面向數據的軟件應用程序的技術。在EF中的實體數據模型(EDM)由以下三種模型和具有相應文件擴展名的映射文件進行定義。

概念架構定義語言文件 (.csdl) – 定義概念模型。

存儲架構定義語言文件 (.ssdl) – 定義存儲模型(又稱邏輯模型)。

映射規范語言文件 (.msl) – 定義存儲模型與概念模型之間的映射。

實體框架使用這些基于XML的模型和映射文件將對概念模型中的實體和關系的創建、讀取、更新和刪除操作轉換為數據源中的等效操作。EDM甚至支持將概念模型中的實體映射到數據源中的存儲過程。它提供以下方式用于查詢 EDM 并返回對象:

LINQ to Entities–提供語言集成查詢(LINQ)支持用于查詢在概念模型中定義的實體類型。

Entity SQL – 與存儲無關的SQL方言,直接使用概念模型中的實體并支持諸如繼承和關系等 EDM 功能。

查詢生成器方法 --可以使用LINQ風格的查詢方法構造 Entity SQL 查詢。

(三)相關知識復習

(1)var類型推斷:var p =new Person();

(2)匿名類型。var a =new {p.Name,Age=5,Gender=p.Gender,Name1=a.Name};//{p.Name}=={Name=p.Name}

(3)給新創建對象的屬性賦值的簡化方法:Person p = new Person{Name=“tom”,Age=5};等價于Person p = new Person();p.Name=“tom”;p.Age=5;

(四)lambda表達式:

函數式編程,在Entity framework編程中用的很多

Actional= delegate(int i) { Console.Writeline(i); };

可以簡化成(=>讀作goes to) :

Action< int> a2 = (inti) = > { Console.Writeline(i); };

還可以省略參數類型(編譯器會自動根據委托類型推斷):

Action< int> a3 = (i) = > { Console.Writeline(i); };

如果只有一個參數還可以省略參數的小括號(多個參數不行)

Actiona4 = i = > { Console.Writeline(i); };

如果委托有返回值,并且方法體只有一行代碼,這一行代碼還是返回值,那么就可以連方法的大括號和return都省略:

Funcfl= delegate(int i, int j) { return "結果是" + (i + j); };

Funcf2= (i,j)=>"結果是"+ (i+ j);

(五)集合常用擴展方法

where (支持委托)、Select (支持委托)、Max 、Min 、OrderBy

First (獲取第一個,如果一個都沒有則異常)

FirstOrDefault (獲取第一個,如果—個都沒有則返回默認值)

Single (獲取唯一一個,如果沒有或者有多個則異常)

SingleOrDefoult (獲取唯一一個, 如果沒有則返回默認值,如果有多個則異常)

注意lambda中照樣要避免變量重名的問題:var p =persons.Where(p => p.Name ==“yltedu.com”).First();

(六)高級集合擴展方法

//學生

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public bool Gender { get; set; }

public int Salary { get; set; }

public override string ToString()

{

return string.Format("Name={0},Age={1},Gender={2},Salary={3}",Name, Age, Gender, Salary);

}

}

//老師

public class Teacher

{

public Teacher()

{

this.Students=new List();

}

public string Name { get; set; }

public ListStudents { get; set; }

}

var s0 =new Person { Name="tom",Age=3,Gender=true,Salary=6000};

var s1 = new Person { Name = "jerry", Age = 8, Gender = true, Salary = 5000 };

var s2 = new Person { Name = "jim", Age = 3, Gender = true, Salary = 3000 };

var s3 = new Person { Name = "lily", Age = 5, Gender = false, Salary = 9000 };

var s4 = new Person { Name = "lucy", Age = 6, Gender = false, Salary = 2000 };

var s5 = new Person { Name = "kimi", Age = 5, Gender = true, Salary = 1000 };

Listlist = new List();

list.Add(s0);

list.Add(s1);

list.Add(s2);

list.Add(s3);

list.Add(s4);

list.Add(s5);

Teacher t1 = new Teacher { Name="英萊特.net"};

t1.Students.Add(s1);

t1.Students.Add(s2);

Teacher t2 = new Teacher { Name = "英萊特Python" };

t2.Students.Add(s2);

t2.Students.Add(s3);

t2.Students.Add(s5);

Teacher[] teachers = { t1,t2};

(1)Any(),判斷集合是否包含元素,返回值是bool,一般比Cout()>0 效率高。Any還可以指定條件表達式。

bool b = list.Any(p => p.Age > 50); 等價于bool b =list.Where(p=>p.Age>50).Any();

(2)Distinct(),剔除完全重復數據。(*)注意自定義對象的Equals 問題:需要重寫Equals 和GetHashCode 方法來進行內容比較。

(3)排序:升序list.OrderBy(p=>p.Age);降序list.OrderByDescending(p=>p.Age)。指定多個排序規 則,而不是多個OrderBy,而是:list.OrderByDescending(p=>p.Age).ThenBy(p=>p.Salary),也支 持ThenByDescending()。注意這些操作不會影響原始的集合數據。

(4)Skip(n)跳過前n條數據;

(5)Take(n)獲取最多n條數據,如果不足n條也不會報錯。常用來分頁獲取數據。

(6)list.Skip(3).Take(2)跳過前3條數據獲取2條數據。

(7)Except(items1)排除當前集合中在items1中存在的元素。用int數組舉例。

(8)Union(items1)把當前集合和items1中組合。用int 數組舉例。

(9)Intersect(items1) 把當前集合和items1 中取交集。用int 數組舉例。

(10)分組:

foreach(var g in list.GroupBy(p => p.Age))

{

Console.WriteLine(g.Key+":"+g.Average(p=>p.Salary));

}

(11)SelectMany:把集合中每個對象的另外集合屬性的值重新拼接為一個新的集合

foreach(var s in teachers.SelectMany(t => t.Students))

{

Console.WriteLine(s);//每個元素都是Person

}

}

注意不會去重,如果需要去重要自己再次調用Distinct()

(12)Join

class Master

{

public long Id { get; set; }

public string Name { get; set; }

}

class Dog

{

public long Id { get; set; }

public long MasterId { get; set; }

public string Name { get; set; }

}

Master m1 = new Master { Id = 1, Name = "英萊特" };

Master m2 = new Master { Id = 2, Name = "比爾蓋茨" };

Master m3 = new Master { Id = 3, Name = "周星馳" };

Master[] masters = { m1,m2,m3};

Dog d1 = new Dog { Id = 1, MasterId = 3, Name = "旺財" };

Dog d2 = new Dog { Id = 2, MasterId = 3, Name = "汪汪" };

Dog d3 = new Dog { Id = 3, MasterId = 1, Name = "京巴" };

Dog d4 = new Dog { Id = 4, MasterId = 2, Name = "泰迪" };

Dog d5 = new Dog { Id = 5, MasterId = 1, Name = "中華田園" };

Dog[] dogs = { d1, d2, d3, d4, d5 };

Join 可以實現和數據庫一樣的Join 效果,對有關聯關系的數據進行聯合查詢 下面的語句查詢所有Id=1 的狗,并且查詢狗的主人的姓名。

var result = dogs.Where(d => d.Id > 1).Join(masters, d => d.MasterId, m => m.Id,(d,m)=>new {DogName=d.Name,MasterName=m.Name});

foreach(var item in result)

{

Console.WriteLine(item.DogName+","+item.MasterName);

}

(七)EF 的安裝

(1)基礎階段用控制臺項目。使用NuGet 安裝EntityFramework。會自動在App.config中增加兩個entityFramework 相關配置段;

(2)在 web.config 中配置連接字符串

易錯點:不能忘了寫providerName="System.Data.SqlClient"增加兩個entityFramework 相關配置段;

(八)EF 簡單DataAnnotations 實體配置

(1)數據庫中建表T_Perons,有Id(主鍵,自動增長)、Name、CreateDateTime字段。

(2)創建Person類[Table(“T_Persons”)]因為類名和表名不一樣,所以要使用Table標注

[Table("T_Persons")]

public class Person

{

public long ID { get; set; }

public string Name { get; set; }

public DateTime CreateTime { get; set; }

}

因為EF約定主鍵字段名是Id,所以不用再特殊指定Id是主鍵,如果非要指定就指定[Key]。因為字段名字和屬性名字一致,所以不用再特殊指定屬性和字段名的對應關系,如果需要特殊指定,則要用[Column(“Name”)]

(*)必填字段標注[Required]、字段長度[MaxLength(5)]、可空字段用int?、如果字段在數據庫有默認值,則要在屬性上標注[DatabaseGenerated]注意實體類都要寫成public,否則后面可能會有麻煩。

(3)創建DbContext類(模型類、實體類)

public class MyDBContext: DbContext

{

//表示使用連接字符串中名字為conn1 的去連接數據庫

public MyDBContext() : base("name=strcon")

{

}

//通過對Persons 集合的操作就可以完成對T_Persons的操作

public DbSetPersons { get; set; }

}

(4)測試

protected void Button1_Click(object sender, EventArgs e)

{

MyDBContext context = new MyDBContext();

Person p=new Person();

p.Name =TextBox1.Text;

p.CreateTime = DateTime.Now;

context.Persons.Add(p);

context.SaveChanges();

}

注意:MyDbContext 對象是否需要using有爭議,不using也沒事。每次用的時候new MyDbContext就行,不用共享同一個實例,共享反而會有問題。SaveChanges()才會把修改更新到數據庫中。

EF的開發團隊都說要using DbContext,很多人不using,只是想利用LazyLoad 而已,但是那樣做是違反分層原則的。我的習慣還是using。

異常的處理:如果數據有錯誤可能在SaveChanges()的時候出現異常,一般仔細查看異常信息或者一直深入一層層的鉆InnerException 就能發現錯誤信息。

舉例:創建一個Person對象,不給Name、CreateDateTime賦值就保存。

二丶 EF 模型的兩種配置方式

EF 中的模型類的配置有DataAnnotations、FluentAPI 兩種。

上面這種在模型類上[Table(“T_Persons”)]、[Column(“Name”)]這種方式就叫DataAnnotations這種方式比較方便,但是耦合度太高,一般的類最好是POCO(Plain Old C# Object,沒有繼承什么特殊的父類,沒有標注什么特殊的Attribute,沒有定義什么特殊的方法,就是一堆普通的屬性);不符合大項目開發的要求。微軟推薦使用FluentAPI 的使用方式,因此后面主要用FluentAPI 的使用方式。

(一) FluentAPI 配置T_Persons 的方式

(1)數據庫中建表T_Perons,有Id(主鍵,自動增長)、Name、CreateDateTime 字段。

(2)創建 Person 類。模型類就是普通C#類

public class Person

{

public long ID { get; set; }

public string Name { get; set; }

public DateTime CreateTime { get; set; }

}

(3)創建一個 PersonConfig 類,放到ModelConfig 文件夾下(PersonConfig、EntityConfig這樣的名字都不是必須的)

public class PersonConfig : EntityTypeConfiguration{

public PersonConfig()

{

this.ToTable("T_Person");

}

}

(4)創建 DbContext 類

public class MyDBContext:DbContext

{

public MyDBContext() : base("name=strcon")

{

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)

{

base.OnModelCreating(modelBuilder);

modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());

}

public DbSetPersons { get; set; }

}

下面這句話:

modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());

代表從這句話所在的程序集加載所有的繼承自EntityTypeConfiguration 為模型配置類。還有很多加載配置文件的做法(把配置寫到OnModelCreating中或者把加載的代碼寫死到OnModelCreating 中),但是這種做法是最符合大項目規范的做法。

和以前唯一的不同就是:模型不需要標注Attribute;編寫一個XXXConfig類配置映射關系;DbContext 中override OnModelCreating;

(5)測試

protected void Button1_Click(object sender, EventArgs e)

{

MyDBContext context = new MyDBContext();

Person p = new Person();

p.Name = TextBox1.Text;

p.CreateTime = DateTime.Now;

context.Persons.Add(p);

context.SaveChanges();

}

(二)EF 的基本增刪改查

獲取DbSet除了可以ctx.Persons之外,還可以ctx.Set()。

(1)增加,一個點:如果Id是自動增長的,創建的對象顯然不用指定Id的值,并且在SaveChanges ()后會自動給對象的Id屬性賦值為新增行的Id字段的值。

(2)刪除。先查詢出來要刪除的數據,然后Remove。這種方式問題最少,雖然性能略低,但是刪除操作一般不頻繁,不用考慮性能。后續在“狀態管理”中會講其他實現方法。

MyDBContext context = new MyDBContext();

if (e.CommandName=="BtnDelete")

{

int id = Convert.ToInt32(e.CommandArgument);

var p = context.Persons.Where(per => per.ID == id).SingleOrDefault();

if (p!=null)

{

context.Persons.Remove(p);

}

int i= context.SaveChanges();

if (i>0)

{

Repeater1.DataSource = context.Persons.ToList();

Repeater1.DataBind();

}

}

怎么批量刪除,比如刪除Id>3 的?查詢出來一個個Remove。性能坑爹。如果操作不頻繁或者數據量不大不用考慮性能,如果需要考慮性能就直接執行sql 語句

(3)修改:先查詢出來要修改的數據,然后修改,然后SaveChanges()

MyDbContext ctx = new MyDbContext();

var ps = ctx.Persons.Where(p => p.Id > 3);

foreach(var p in ps)

{

p.CreateDateTime = p.CreateDateTime.AddDays(3);

p.Name = "haha";

}

ctx.SaveChanges();

性能問題?同上。

(4)查。因為DbSet 實現了IQueryable 接口,而IQueryable 接口繼承了IEnumerable 接口,所以可以使用所有的linq、lambda 操作。給表增加一個Age 字段,然后舉例orderby、groupby、where 操作、分頁等。一樣一樣的。

(5)查詢 order by 的一個細節

EF調用Skip之前必須調用OrderBy:如下調用var items = ctx.Persons.Skip(3).Take(5); 會報錯“The method ‘OrderBy’ must be called before the method ‘Skip’.)”,要改成:var items = ctx.Persons.OrderBy(p=>p.CreateDateTime).Skip(3).Take(5);

這也是一個好習慣,因為以前就發生過(寫原始sql):分頁查詢的時候沒有指定排序規則,以為默認是按照Id 排序,其實有的時候不是,就造成數據混亂。寫原始SQL 的時候也要注意一定要指定排序規則。

(三)EF 原理及SQL 監控

EF 會自動把Where()、OrderBy()、Select()等這些編譯成“表達式樹(Expression Tree)”,然后會把表達式樹翻譯成SQL 語句去執行。(編譯原理,AST)因此不是“把數據都取到內存中,然后使用集合的方法進行數據過濾”,因此性能不會低。但是如果這個操作不能被翻譯成SQL語句,則或者報錯,或者被放到內存中操作,性能就會非常低。

(1)怎么查看真正執行的SQL是什么樣呢?

DbContext有一個Database屬性,其中的Log屬性,是Action委托類型,也就是可以指向一個void A(string s)方法,其中的參數就是執行的SQL語句,每次EF執行SQL語句的時候都會執行Log。因此就可以知道執行了什么SQL。

EF的查詢是“延遲執行”的,只有遍歷結果集的時候才執行select 查詢,ToList()內部也是遍歷結果集形成List。

查看Update操作,會發現只更新了修改的字段。

(2)觀察一下前面學學習時候執行的SQL是什么樣的。Skip().Take()被翻譯成了?Count()被翻譯成了?

var result = ctx.Persons.Where(p => p.Name.StartsWith("inlett"));//看看翻譯成了什么?

var result = ctx.Persons.Where(p => p.Name.Contains("com"));

var result = ctx.Persons.Where(p => p.Name.Length>5);

var result = ctx.Persons.Where(p => p.CreateDateTime>DateTime.Now);

long[] ids = { 2,5,6};//不要寫成int[]

var result = ctx.Persons.Where(p => ids.Contains(p.Id));

(3)EF中還可以多次指定where來實現動態的復合檢索:

//必須寫成IQueryable,如果寫成IEnumerable 就會在內存中取后續數據

IQueryableitems = ctx.Persons;//為什么把IQueryable換成var 會編譯出錯

items = items.Where(p=>p.Name=="inlett");

items = items.Where(p=>p.Id>5);

查看一下生成的SQL語句。

(4)EF是跨數據庫的,如果遷移到MYSQL上,就會翻譯成MYSQL的語法。要配置對應數據庫的Entity Framework Provider。

(5)細節:

每次開始執行的__MigrationHistory等這些SQL語句是什么?是DBMigration用的,也就是由EF幫我們建數據庫,現在我們用不到,用下面的代碼禁用:

Database.SetInitializer(null);

XXXDbContext就是項目DbContext的類名。一般建議放到XXXDbContext構造函數中。注意這里的Database 是System.Data.Entity下的類,不是DbContext的Database屬性。如果寫到DbContext中,最好用上全名,防止出錯。

(四)執行原始SQL

不要“手里有錘子,到處都是釘子”在一些特殊場合,需要執行原生SQL。

執行非查詢語句,調用DbContext的Database屬性的ExecuteSqlCommand方法,可以通過占位符的方式傳遞參數:

ctx.Database.ExecuteSqlCommand("update T_Persons set Name={0},CreateDateTime=GetDate()","YLT.com");

占位符的方式不是字符串拼接,經過觀察生成的SQL語句,發現仍然是參數化查詢,因此不會有SQL注入漏洞。

執行查詢:

var q1 = ctx.Database.SqlQuery("select Name,Count(*) Count from T_Persons where Id>{0} and CreateDateTime<={1} group by Name",2, DateTime.Now); //返回值是DbRawSqlQuery類型,也是實現IEnumerable 接口

foreach(var item in q1)

{

Console.WriteLine(item.Name+":"+item.Count);

}

class Item1

{

public string Name { get; set; }

public int Count { get; set; }

}

類似于ExecuteScalar的操作比較麻煩:

int c = ctx.Database.SqlQuery("select count(*) from T_Persons").SingleOrDefault();

(五)不是所有lambda 寫法都能被支持

下面想把Id轉換為字符串比較一下是否為"3"(別管為什么):

var result = ctx.Persons.Where(p => Convert.ToString(p.Id)=="3");

運行會報錯(也許高版本支持了就不報錯了),這是一個語法、邏輯上合法的寫法,但是EF目前無法把他解析為一個SQL語句。

出現“System.NotSupportedException”異常一般就說明你的寫法無法翻譯成SQL語句

想獲取創建日期早于當前時間一小時以上的數據:

var result = ctx.Persons.Where(p => (DateTime.Now - p.CreateDateTime).TotalHours>1);

同樣也可能會報錯。

怎么解決?

嘗試其他替代方案(沒有依據,只能亂試):

var result = ctx.Persons.Where(p => p.Id==3);

EF中提供了一個SQLServer專用的類SqlFunctions,對于EF不支持的函數提供了支持,比如:

var result = ctx.Persons.Where(p =>SqlFunctions.DateDiff("hour",p.CreateDateTime,DateTime.Now)>1);

(六)EF對象的狀態

簡介

為什么查詢出來的對象Remove()、再SaveChanges()就會把數據刪除。而自己new一個Person()對象,然后Remove()不行?為什么查詢出來的對象修改屬性值后、再SaveChanges()就會把數據庫中的數據修改。

因為EF會跟蹤對象狀態的改變。

EF中中對象有五個狀態:Detached(游離態,脫離態)、Unchanged(未改變)、Added(新增)、Deleted(刪除)、Modified(被修改)。

Add()、Remove()修改對象的狀態。所有狀態之間幾乎都可以通過:Entry§.State=xxx的方式進行強制狀態轉換。

通過代碼來演示一下。這個狀態轉換圖沒必要記住,了解即可。

狀態改變都是依賴于Id的(Added除外)

應用(*)

當SavaChanged()方法執行期間,會查看當前對象的EntityState的值,決定是去新增(Added)、修改Modified)、刪除(Deleted)或者什么也不做(UnChanged)。下面的做法不推薦,在舊版本中一些寫法不被支持,到新版EF中可能也會不支持。

(1)不先查詢再修改再保存,而是直接更新部分字段的方法

var p = new Person();

p.Id = 2;

ctx.Entry(p).State = System.Data.Entity.EntityState.Unchanged;

p.Name = "adfad";

ctx.SaveChanges();

也可以:

var p = new Person();

p.Id = 5;

p.Name = "yltedu";

ctx.Persons.Attach(p);//等價于ctx.Entry(p).State = System.Data.Entity.EntityState.Unchanged;

ctx.Entry(p).Property(a => a.Name).IsModified = true;

ctx.SaveChanges();

(2)不先查詢再Remove再保存,而是直接根據Id刪除的方法:

var p = new Person();

p.Id = 2;

ctx.Entry(p).State = System.Data.Entity.EntityState.Deleted;

ctx.SaveChanges();

注意下面的做法并不會刪除所有Name=“ylt.com” 的,因為更新、刪除等都是根據Id進行的:

var p = new Person();

p.Name = "yltedu.com";

ctx.Entry(p).State = System.Data.Entity.EntityState.Deleted;

ctx.SaveChanges();

上面其實是在:

delete * from t_persons where Id=0

EF優化的一個技巧

如果查詢出來的對象只是供顯示使用,不會修改、刪除后保存,那么可以使用AsNoTracking()來使得查詢出來的對象是Detached狀態,這樣對對象的修改也還是Detached狀態,EF不再跟蹤這個對象狀態的改變,能夠提升性能。

var p1 = ctx.Persons.Where(p => p.Name == "rupeng.com").FirstOrDefault();

Console.WriteLine(ctx.Entry(p1).State);

改成:

var p1 = ctx.Persons.AsNoTracking().Where(p => p.Name == "rupeng.com").FirstOrDefault();

Console.WriteLine(ctx.Entry(p1).State);

因為AsNoTracking()是DbQuery類(DbSet的父類)的方法,所以要先在DbSet后調用AsNoTracking()。

Fluent API更多配置

基本EF配置只要配置實體類和表、字段的對應關系、表間關聯關系即可。如果利用EF的高級配置,可以達到更多效果:如果數據錯誤(比如字段不能為空、字符串超長等),會在EF層就會報錯,而不會被提交給數據庫服務器再報錯;如果使用自動生成數據庫,也能幫助EF生成更完美的數據庫表。

這些配置方法無論是DataAnnotations、FluentAPI都支持,下面講FluentAPI的用法,DataAnnotations感興趣的自己查(http://blog.csdn.net/beglorious/article/details/39637475)。

盡量用約定,EF配置越少越好。Simple is best 參考資料:http://www.cnblogs.com/nianming/archive/2012/11/07/2757997.html

HasMaxLength設定字段的最大長度

public PersonConfig()

{

this.ToTable("T_Persons");

this.Property(p => p.Name).HasMaxLength(50);//長度為50

}

依賴于數據庫的“字段長度、是否為空”等的約束是在數據提交到數據庫服務器的時候才會檢查;EF的配置,則是由EF來檢查的,如果檢查出錯,根本不會被提交給服務器。

如果插入一個Person對象,Name屬性的值非常長,保存的時候就會報DbEntityValidationException異常,這個異常的Message中看不到詳細的報錯消息,要看EntityValidationErrors屬性的值。

var p = new Person();

p.Name = "非常長的字符串";

ctx.Persons.Add(p);

try

{

ctx.SaveChanges();

}

catch(DbEntityValidationException ex)

{

StringBuilder sb = new StringBuilder();

foreach(var ve in ex.EntityValidationErrors.SelectMany(eve=>eve.ValidationErrors))

{

sb.AppendLine(ve.PropertyName+":"+ve.ErrorMessage);

}

Console.WriteLine(sb);

}

(有用)字段是否可空

this.Property(p => p.Name).IsRequired() 屬性不能為空;

this.Property(p => p.Name).IsOptional() 屬性可以為空;(沒用的雞肋!)

EF默認規則是“主鍵屬性不允許為空,引用類型允許為空,可空的值類型long?等允許為空,值類型不允許為空?!被凇氨M量少配置”的原則:如果屬性是值類型并且允許為null,就聲明成long?等,否則聲明成long等;如果屬性屬性值是引用類型,只有不允許為空的時候設置IsRequired()。

其他一般不用設置的(了解即可)

(1)主鍵:this.HasKey(p => p.pId);

(2)某個字段不參與映射數據庫:this.Ignore(p => p.Name1);

(3)this.Property(p => p.Name).IsFixedLength(); 是否對應固定長度

(4)this.Property(p => p.Name).IsUnicode(false) 對應的數據庫類型是varchar類型,而不是nvarchar

(5)this.Property(p => p.Id).HasColumnName(“Id1”); Id列對應數據庫中名字為Id的字段

(6)this.Property(p=>p.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity) 指定字段是自動增長類型。

流動起來

因為ToTable()、Property()、IsRequired()等方法的還是配置對象本身,因此可以實現類似于StringBuilder的鏈式編程,這就是“Fluent”一詞的含義; 因此下面的寫法:

public PersonConfig ()

{

this. ToTabl e ("T—Persons");

this.HasKey(p => p. Id);

this. Ignore(p => p. Name2);

this.Property(p => p.Name) . HasMaxLength (50);

this. Property (p => p. Name) . I sRequired ();

this.Property(p => p.CreateDateTime) . HasCol umnName ("CreateDateTi me");

this. Property (p => p. Name) . I sRequired () ;

}

可以簡化成:

public PersonConfig()

{

this. ToTable ("T_Persons") . HasKey (p => p. Id). Ignore (p => p. Name2) ;

this. Property (p => p. Name) . HasMaxLength (50). IsRequired O ;

this. Property (p => p. CreateDateTime) . HasColumnName ("CreateDateTime") . IsRequiredO;

}

后面用的時候都Database.SetInitializer(null);

一對多關系映射

EF最有魅力的地方在于對于多表間關系的映射,可以簡化工作。 復習一下表間關系:

(1)一對多(多對一):一個班級對應著多個學生,一個學生對著一個班級。一方是另外一方的唯一。在多端有一個指向一端的外鍵。舉例:班級表:T_Classes(Id,Name) 學生表

T_Students(Id,Name,Age,ClassId)

(2)多對多:一個老師對應多個學生,一個學生對于多個老師。任何一方都不是對方的唯一。 需要一個中間關系表。具體: 學生表T_Students(Id,Name,Age,ClassId) , 老師表 T_Teachers(Id,Name,PhoneNum),關系表T_StudentsTeachers(Id,StudentId,TeacherId)

和關系映射相關的方法:

(1)基本套路this.Has(p=>p.A).With***() 當前這個表和A 屬性的表的關系是Has 定義, With 定義的是A 對應的表和這個表的關系。Optional/Required/Many

(2)HasOptional() 有一個可選的(可以為空的)

(3)HasRequired() 有一個必須的(不能為空的)

(4)HasMany() 有很多的

(5)WithOptional() 可選的

(6)WithRequired() 必須的

(7)WithMany() 很多的

舉例:

在AAA 實體中配置this.HasRequired(p=>p.BBB).WithMany();是什么意思? 在AAA 實體中配置this.HasRequired(p=>p.BBB).WithRequired ();是什么意思?

配置一對多關系

(1)先按照正常的單表配置把Student、Class 配置起來,T_Students 的ClassId 字段就對應Student類的ClassId 屬性。WithOptional()

using (MyDbContext ctx = new MyDbContext ())

{

Class c l = new Class { Name= " 三年二班,, } ;

ctx. Cl asses. Add (cl) ;

ctx. SaveChanges () ;

Student s l = new Student { Age = 11, Nam e = " 張三" , Cl assl d = cl. Id } ;

Student s2 = new Student { Name = " 李四" , Classld = cl. Id } ;

ctx.Students.Add(s1);

ctx. Students. Add(s2);

ctx. SaveChanges O ;

}

(2)給Student類增加一個Class類型、名字為Class(不一定非叫這個,但是習慣是:外鍵名去掉Id)的屬性,要聲明成virtual(后面講原因)。

(3)然后就可以實現各種對象間操作了:

Console.WriteLine(ctx.Students.First().Class.Name)

然后數據插入也變得簡單了,不用再考慮“先保存Class,生成Id,再保存Student”了。這樣就是純正的“面向對象模型”,ClassId 屬性可以刪掉。

Class c1 = new Class { Name = "五年三班" };

ctx.Classes.Add(c1);

Student s1 = new Student { Age = 11, Name = "皮皮蝦"};

Student s2 = new Student { Name = "巴斯"};

s1.Class = c1;

s2.Class = c1;

ctx.Students.Add(s1);

ctx.Students.Add(s2);

ctx.Classes.Add(c1);

ctx.SaveChanges();

(4)如果ClassId 字段可空怎么辦?直接把ClassId 屬性設置為long?

(5)還可以在Class中配置一個public virtual ICollection Students { get; set; } = new List(); 屬性。最好給這個屬性初始化一個對象。注意是virtual。這樣就可以獲得所有指向了當前對象的Stuent 集合,也就是這個班級的所有學生。我個人不喜歡這個屬性,業界的大佬也是建議“盡量不要設計雙向關系”,因為可以通過Class clz = ctx.Classes.First(); var students =ctx.Students.Where(s => s.ClassId == clz.Id);來查詢獲取到,思路更清晰。

不過有了這樣的集合屬性之后一個方便的地方:

Class c1 = new Class { Name = "五年三班" };

ctx.Classes.Add(c1);

Student s1 = new Student { Age = 11, Name = "皮皮蝦" };

Student s2 = new Student { Name = "巴斯" };

c1.Students.Add(s1);//注意要在Students屬性聲明的時候= new List();或者在之前賦值

c1.Students.Add(s2);

ctx.Classes.Add(c1);

ctx.SaveChanges();

EF會自動追蹤對象的關聯關系,給那些有關聯的對象也自動進行處理。

在進行數據遍歷的時候可能會報錯“已有打開的與此 Command 相關聯的 DataReader,必須首先將它關閉。”

foreach(var s in ctx.Students)

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

一對多深入:

默認約定配置即可,如果非要配置,可以在StudentConfig 中如下配置:

this.HasRequired(s=> s.Class).WithMany().HasForeignKey(s => s.ClassId);

表示“我需要(Require)一個Class,Class有很多(Many)的Student;ClassId是這樣一個外鍵”。

如果ClassId 可空,那么就要寫成:

this.HasOptional (s => s.Class).WithMany().HasForeignKey(s => s.ClassId);

如果這樣Class clz = ctx.Classes.First();foreach (Student s in clz.Students)訪問,也就是從一端發起對多端的方法,那么就會報錯“找不到Class_Id 字段”需要在ClassConfig中再反向配置一遍 HasMany(e =>e.Students).WithRequired().HasForeignKey(e=>e.ClassId); 因為如果在Class 中引入Students 屬性,還要再在ClassConfig 再配置一遍反向關系,很麻煩。因此再次驗證“不要設計雙向關系”。

如果一張表中有兩個指向另外一個表的外鍵怎么辦?比如學生有“正常班級Class”(不能空)和“小灶班級XZClass”(可以空)兩個班。在StudentConfig 中:

this.HasRequired(s => s.Class).WithMany().HasForeignKey(s => s.ClassId);

this. HasOptional (s => s.XZClass).WithMany().HasForeignKey(s => s.XZClassId);

多對多關系配置

老師和學生:

class Student

{

public long Id { set; get; }

public string Name { get; set; }

public virtual ICollectionTeachers { get; set; }=new List();

}

class Teacher

{

public long Id { set; get; }

public string Name { get; set; }

public virtual ICollectionStudents { get; set; }=new List< Student >();

}

class StudentConfig : EntityTypeConfiguration{

public StudentConfig()

{

ToTable("T_Students");

}

}

class TeacherConfig : EntityTypeConfiguration{

public TeacherConfig()

{

ToTable("T_Teachers");

this.HasMany(e => e.Students).WithMany(e => e.Teachers)//易錯,容易丟了WithMany 的參數

.Map(m =>

m.ToTable("T_TeacherStudentRelations").MapLeftKey("TeacherId").MapRightKey("StudentId"));

}

}

關系配置到任何一方都可以

這樣不用中間表建實體(也可以為中間表建立一個實體,其實思路更清晰),就可以完成多對多映射。當然如果中間關系表還想有其他字段,則要必須為中間表建立實體類。 測試:

Teacher t1 = new Teacher();

t1.Name = "張老師";

t1.Students = new List();

Teacher t2 = new Teacher();

t2.Name = "王老師";

t2.Students = new List();

Student s1 = new Student();

s1.Name = "tom";

s1.Teachers = new List();

Student s2 = new Student();

s2.Name = "jerry";

s2.Teachers = new List();

t1.Students.Add(s1);

附錄:

(1)關于WithMany()的參數

在一對多關系中,如果只配置多端關系并且沒有給WithMany()指定參數的話,在進行反向關系操作的時候就會報錯。要么在一端也配置一次,最好的方法就是還是只配置多端,只不過給WithMany()指定參數:

class StudentConfig:EntityTypeConfiguration{

public StudentConfig()

{

ToTable("T_Students");

this.HasRequired(e => e.Class).WithMany(e=>e.Students)

.HasForeignKey(e=>e.ClassId);

}

}

當然還是不建議用反向的集合屬性,如果Class沒有Students這個集合屬性的話,就不用(也不能)WithMany的參數了。

關于多對多關系配置的WithMany()問題

上次講配置多對多的關系沒有給WithMany設定參數,這樣反向操作的時候就會出錯,應該改成:this.HasMany(e => e.Students).WithMany(e=>e.Teachers)

總結:一對多的中不建議配置一端的集合屬性,因此配置的時候不用給WithMany()參數,如果配置了集合屬性,則必須給WithMany 參數;多對多關系必須要給WithMany()參數。

總結一對多、多對多的“最佳實踐”

(2)一對多最佳方法(不配置一端的集合屬性):

多端

public class Student

{

public long Id { get; set; }

public string Name { get; set; }

public long ClassId { get; set; }

public virtual Class Class { get; set; }

}

一端

public class Class

{

public long Id { get; set; }

public string Name { get; set; }

}

在多端的模型配置(StudentConfig)中:

this.HasRequired(e => e.Class).WithMany() .HasForeignKey(e=>e.ClassId);

(3)一對多的配置(在一端配置一個集合屬性,極端不推薦)

多端

public class Student

{

public long Id { get; set; }

public string Name { get; set; }

public long ClassId { get; set; }

public virtual Class Class { get; set; }

}

一端

public class Class

{

public long Id { get; set; }

public string Name { get; set; }

public virtual ICollectionStudents { get; set; } = new List();

}

多端的配置(StudentConfig)中

this.HasRequired(e => e.Class).WithMany(e=>e.Students)//WithMany()的參數不能丟 .HasForeignKey(e=>e.ClassId);

(4)多對多最佳配置

兩端模型

public class Student

{

public long Id { get; set; }

public string Name { get; set; }

public virtual ICollectionTeachers { get; set; } = new List();

}

public class Teacher

{

public long Id { get; set; }

public string Name { get; set; }

public virtual ICollectionStudents { get; set; } = new List();

}

在其中一端配置(StudentConfig)

this.HasMany(e => e.Teachers).WithMany(e=>e.Students).Map(m =>//不要忘了WithMany的參數 m.ToTable("T_StudentTeachers").MapLeftKey("StudentId").MapRightKey("TeacherId"));

多對多中 移除關系:t.Students.Remove(t.Students.First()); 添加關系

()多對多中還可以為中間表建立一個實體方式映射。當然如果中間關系表還想有其他字段,則要必須為中間表建立實體類(中間表和兩個表之間就是兩個一對多的關系了)。

數據庫創建策略(): 如果數據庫創建好了再修改模型或者配置,運行就會報錯,那么就要手動刪除數據庫或者:Database.SetInitializer(new DropCreateDatabaseIfModelChanges());如果報錯“數據庫正在使用”,可能是因為開著Mangement Studio,先關掉就行了。知道就行了,只適合學習時候使用。

CodeFirst Migration 參考(*): http://www.cnblogs.com/libingql/p/3330880.html 太復雜, 不符合Simple is Best 的原則,這是為什么有一些開發者不用EF,而使用Dapper 的原因。

做項目的時候建議初期先把主要的類使用EF 自動生成表,然后干掉Migration 表,然后就 Database.SetInitializer(null);以后對數據庫表的修改都手動完成,也就是手動改實體類、 手動改數據庫表。

三丶 延遲加載(LazyLoad)

如果public virtual Class Class { get; set; }(實體之間的關聯屬性又叫做“導航屬性(Navigation Property)”)把virtual 去掉,那么下面的代碼就會報空引用異常

var s = ctx.Students.First();

Console.WriteLine(s.Class.Name);

聯想為什么?憑什么!!! 改成virtual觀察SQL的執行。執行了兩個SQL,先查詢T_Students,再到T_Classes中查到對應的行。 這叫“延遲加載”(LazyLoad),只有用到關聯的對象的數據,才會再去執行select 查詢。注意延遲加載只在關聯對象屬性上,普通屬性沒這個東西。 注意:啟用延遲加載需要配置如下兩個屬性(默認就是true,因此不需要去配置,只要別手賤設置為false 即可)

context.Configuration.ProxyCreationEnabled = true;

context.Configuration.LazyLoadingEnabled = true;

分析延遲加載的原理:打印一下拿到的對象的GetType(),再打印一下GetType().BaseType;我們發現拿到的對象其實是Student子類的對象。(如果和我這里結果不一致的話,說明:類不是public,沒有關聯的virtual 屬性) 因此EF其實是動態生成了實體類對象的子類,然后override了這些virtual屬性,類似于這樣的 實現:

public class StudentProxy:Student

{

private Class clz;

public override Class Class

{

get

{

if(this.clz==null)

{

this.clz= ....//這里是從數據庫中加載Class 對象的代碼

}

return this.clz;

}

}

}

再次強調:如果要使用延遲加載,類必須是public,關聯屬性必須是virtual。 延遲加載(LazyLoad)的優點:用到的時候才加載,沒用到的時候才加載,因此避免了一次性加載所有數據,提高了加載的速度。缺點:如果不用延遲加載,就可以一次數據庫查詢就可以把所有數據都取出來(使用join實現),用了延遲加載就要多次執行數據庫操作,提高了數據庫服務器的壓力。 因此:如果關聯的屬性幾乎都要讀取到,那么就不要用延遲加載;如果關聯的屬性只有較小的概率(比如年齡大于7 歲的學生顯示班級名字,否則就不顯示)則可以啟用延遲加載。這個概率到底是多少是沒有一個固定的值,和數據、業務、技術架構的特點都有關系,這是需要經驗和直覺,也需要測試和平衡的。 注意:啟用延遲加載的時候拿到的對象是動態生成類的對象,是不可序列化的,因此不能直接放到進程外Session、Redis 等中,解決方法?

(一) 不延遲加載,怎么樣一次性加

用EF永遠都要把導航屬性設置為virtual。又想方便(必須是virtual)又想效率高!

使用Include()方法:

var s = ctx.Students.Include("Class").First();

觀察生成的SQL語句,會發現只執行一個使用join的SQL就把所有用到的數據取出來了。當然拿到的對象還是Student 的子類對象,但是不會延遲加載。(不用研究“怎么讓他返回Student 對象”)

Include(“Class”)的意思是直接加載Student 的Class 屬性的數據。注意只有關聯的對象屬性才可以用Include,普通字段不可以直接寫"Class"可能拼寫錯誤,如果用C#6.0,可以使用nameof語法解決問這個問題:

var s = ctx.Students.Include(nameof(Student.Class)).First();

也可以using System.Data.Entity;然后var s = ctx.Students.Include(e=>e.Class).First(); 推薦這種做法。 如果有多個屬性需要一次性加載,也可以寫多個Include:

var s = ctx.Students.Include(e=>e.Class) .Include(e=>e.Teacher).First();

如果Class對象還有一個School屬性,也想把School對象的屬性也加載,就要:

var s = ctx.Students.Include("Class").Include("Class. School").First(); 或者更好的

var s = ctx.Students.Include(nameof(Student.Class)).Include(nameof(Student.Class)+"."+nameof(Class.School)).First();

(二) 延遲加載的一些坑

DbContext銷毀后就不能再延遲加載了,因為數據庫連接已經斷開

下面的代碼最后一行會報錯:

Student s;

using (MyDbContext ctx = new MyDbContext())

{

s = ctx.Students.First();

}

Console.WriteLine(s.Class.Name);

兩種解決方法:

用Include,不延遲加載(推薦)

Student s;

using (MyDbContext ctx = new MyDbContext())

{

s = ctx.Students.Include(t=>t.Class).First();

}

Console.WriteLine(s.Class.Name);

關閉前把要用到的數據取出來

Class c;

using (MyDbContext ctx = new MyDbContext())

{

Student s = ctx.Students.Include(t=>t.Class).First();\

c = s.Class;

}

Console.WriteLine(c.Name);

(2)兩個取數據一起使用

下面的程序會報錯:已有打開的與此 Command 相關聯的 DataReader,必須首先將它關閉。

foreach(var s in ctx.Students)

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

(3)因為EF的查詢是“延遲執行”的,只有遍歷結果集的時候才執行select 查詢,而由于延遲加載的存在到s.Class.Name也會再次執行查詢。ADO.Net中默認是不能同時遍歷兩個DataReader。因此就報錯。

解決方法有如下

允許多個DataReader 一起執行:在連接字符串上加上MultipleActiveResultSets=true,但只適用于SQL 2005以后的版本。其他數據庫不支持。

執行一下ToList(),因為ToList()就遍歷然后生成List:

foreach(var s in ctx.Students.ToList())

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

推薦做法:用Include預先加載:

foreach(var s in ctx.Students.Include(e=>e.Class))

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

四丶 實體類的繼承

所有實體類都會有一些公共屬性,可以把這些屬性定義到一個父類中。比如:

public abstract class BaseEntity

{

public long Id { get; set; } //主鍵

public bool IsDeleted { get; set; } = false; //軟刪除

public DateTime CreateDateTime { get; set; } = DateTime.Now;//創建時間

public DateTime DeleteDateTime { get; set; } //刪除時間

}

使用公共父類的好處不僅是寫實體類簡單了,而且可以提供一個公共的Entity 操作類:

public abstract class BaseEntity

{

public long Id { get; set; } //主鍵

public bool IsDeleted { get; set; } = false; //軟刪除

public DateTime CreateDateTime { get; set; } = DateTime.Now;//創建時間

public DateTime DeleteDateTime { get; set; } //刪除時間

}

使用公共父類的好處不僅是寫實體類簡單了,而且可以提供一個公共的Entity 操作類:

class BaseDAOwhere T:BaseEntity

{

private MyDbContext ctx;//不自己維護MyDbContext 而是由調用者傳遞,因為調用者可以要執行很多操作,由調用者決定什么時候銷毀。

public BaseDAO (MyDbContext ctx)

{

this.ctx = ctx;

}

public IQueryableGetAll()//獲得所有數據(不要軟刪除的)

{

return ctx.Set().Where(t=>t.IsDeleted==false);//這樣自動處理軟刪除,避免了忘了過濾軟刪除的數據

}

public IQueryableGetAll(int start,int count) //分頁獲得所有數據(不要軟刪除的)

{

return GetAll().Skip(start).Take(count);

}

public long GetTotalCount()//獲取所有數據的條數

{

return GetAll().LongCount();

}

public T GetById(long id)//根據id 獲取

{

return GetAll().Where(t=>t.Id==id).SingleOrDefault();

}

public void MarkDeleted(long id)//軟刪除

{

T en = GetById(id);

if(en!=null)

{

en.IsDeleted = true;

en.DeleteDateTime = DateTime.Now;

ctx.SaveChanges();

}

}

}

DAL同層內返回IQueryable比IEnumerable更好

下面的代碼會報錯:

using (MyDbContext ctx = new MyDbContext())

{

BaseDAOdao = new BaseDAO(ctx);

foreach(var s in dao.GetAll())

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

}

原因是什么?怎么Include?需要using System.Data.Entity;

using (MyDbContext ctx = new MyDbContext())

{

BaseDAOdao = new BaseDAO(ctx);

foreach(var s in dao.GetAll().Include(t=>t.Class))

{

Console.WriteLine(s.Name);

Console.WriteLine(s.Class.Name);

}

}

有兩個版本的Include、AsNoTracking:

(1)DbQuery 中的:DbQuery AsNoTracking()、DbQuery Include(string path)

(2)QueryableExtensions 中的擴展方法: AsNoTracking(this IQueryable source) 、 Include(this IQueryable source, string path)、Include(this IQueryablesource, Expression> path)

DbSet繼承自DbQuery;

Where()、Order、Skip()等這些方法返回的是IQueryable接口。

因此如果在IQueryable接口類型的對象上調用Include、AsNoTracking就要using System.Data.Entity

五丶 linq

(一) 簡介

查詢Id>1的狗有如下兩種寫法:

var r1 = dogs.Where(d => d.Id > 1);

var r2 = from d in dogs where d.Id>1 select d;

第一種寫法是使用lambda 的方式寫的,官方沒有正式的叫法,我們就叫“lambda寫法”;

第二種是使用一種叫Linq(讀作:link)的寫法,是微軟發明的一種類似SQL的語法,給我們一個新選擇。兩種方法是可以互相替代的,沒有哪個好、哪個壞,看個人習慣。

我的經驗:需要join等復雜用法的時候Linq更易懂,一般的時候“lambda寫法”更清晰,更緊湊。反編譯得知,這兩種寫法最終編譯成同樣的東西,所以本質上一樣的。

(二) 辟謠

“Linq被淘汰了”是錯誤的說法,應該是“Linq2SQL被淘汰了”。linq就是微軟發明的這個語法,可以用這種語法操作很多數據,操作SQL數據就是Linq2SQL,linq操作后面學的EntityFramework就是Linq2Entity,linq操作普通.Net 對象就是Linq2Object、Linq操作XML文檔就是Linq2XML。

(三) Linq 基本語法

以from item in items 開始,items為待處理的集合,item為每一項的變量名;最后要加上select,表示結果的數據;記得select一定要最后。這是剛用比較別扭的地方。

看各種用法,不用解析:

var r= from d in dogs select d.Id;

var r= from d in dogs select new{d.Id,d.Name,Desc="一條狗"};

排序

var items = from d in dogs

//orderby d.Age

//orderby d.Age descending

orderby d.Age,d.MasterId descending

select d;

join

var r9 = from d in dogs

join m in masters on d.MasterId equals m1.Id

select new { DogName=d.Name,MasterName=m.Name};

注意join中相等不要用==,要用equals。寫join的時候linq比“lambda”漂亮

group by

var r1 = from p in list

group p by p.Age into g

select new { Age = g.Key, MaxSalary = g.Max(p=>p.Salary), Count = g.Count() };

(四) 混用

只有Where,Select,OrderBy,GroupBy,Join 等這些能用linq寫法,如果要用下面的 “Max,Min,Count,Average,Sum,Any,First,FirstOrDefault,Single,SingleOrDefault,Distinct,Skip,Take等”則還要用lambda 的寫法(因為編譯后是同一個東西,所以當然可以混用)。

var r1 = from p in list

group p by p.Age into g

select new { Age = g.Key, MaxSalary = g.Max(p=>p.Salary), Count = g.Count() };

int c = r1.Count();

var item = r1.SingleOrDefault();

var c = (from p in list

where p.Age>3

select p

).Count();

lambda對linq說:論漂亮我不行,論強大你不行!

六丶C#6.0 語法

(1)屬性的初始化“public int Age{get;set;}=6”。低版本.Net中怎么辦?

(2)nameof:可以直接獲得變量、屬性、方法等的名字的字符串表現形式。獲取的是最后一段的名稱。如果在低版本中怎么辦?

class Program

{

static void Main(string[] args)

{

Person p1 = new Person();

string s1 = nameof(p1);

string s2 = nameof(Person);

string s3 = nameof(p1.Age);

string s4 = nameof(Person.Age);

string s5 = nameof(p1.F1);

Console.ReadKey();

}

}

public class Person

{

public int Age { get; set; }

public string Name { get; set; }

public void Hello()

{

}

public static void F1()

{

}

}

好處:避免寫錯了,可以利用編譯時檢查。

應用案例:ASP.Net MVC 中的[Compare(“BirthDay”)]改成[Compare(nameof(BirthDay))]

(3)??語法:int j= i??3; 如果i為null則表達式的值為3,否則表達式的值就是i的值。如果在低版本中怎么辦?int j = (i== null)?3:(int)i;

應用案例:string name = null;Console.WriteLine(name??“未知”);

(4)?.語法:string s8 = null;string s9 = s8?.Trim(); 如果s8為null,則不執行Trim(),讓表達式的結果為null。在低版本中怎么辦?

string s9=null;if(s8!=null){s9=s8.Trim();};

七丶ORM

(一)ORM簡介

ORM(Object Relational Mapping)對象關系映射,一般指持久化數據和實體對象的映射

數據存儲是絕大多數軟件系統都要接觸到的技術,具有一定規模的軟件產品,為了方便存儲和管理數據,便引入了數據庫這一工具,但是數據如何從程序寫入數據庫的呢?

為方便程序員通過代碼將數據寫入數據庫,一般的語言開發的廠商都會為各種數據庫適配數據庫連接的驅動程序,比如ADO.Net,JDBC等。

但是數據庫連接的驅動程序的職責在于管理連接數據庫,設置連接參數等信息,通常會返回各自封裝好的數據集類型,驅動程序封裝的類型往往是以數據為核心進行描述的,現代化的軟件設計為了簡便描述事物的特征都而以面向對象思想為核心,兩者之間的轉換還有很多的路要走。

除卻轉換部分,Sql語句的編寫也是一大學問,一般的編程語言都沒有為sql語句定義類型,這是因為每種數據庫的sql語句風格都是不一樣的,難以給出一個統一的方案。退而求其次,一般的編程語言都采用字符串形式傳遞sql語句到數據庫驅動程序。拋棄各種各樣的sql語句的學習之外,這種方式有一個很大的弊端,那就是sql語句的拼寫極容易由于手誤而犯錯。

在這種場景下,ORM框架誕生了!

(二)ORM的工作原理

沒有ORM的情況下,主要有兩個槽點:

驅動返回類型和對象不能良好映射

SQL語句的學習成本及易錯率(多種數據庫語句難以全部掌握)

那么,且看我們的ORM如何改善這兩個槽點:

(1)數據驅動返回的數據通常都是以數據為核心的數據集合,我們需要通過手動將類對象和數據庫返回的列數據進行一一匹配獲取,然后賦值到對象上。在這里要感謝泛型和反射兩大語法,通過泛型和反射,我們可以獲取到任何實體類的屬性而不是具體到某一種類型,通過遍歷實體類的屬性去數據集合中一一獲取并復制返回。這一操作便將數據集合的數據完美包裝成了以面向對象為核心的和類相關的對象數據集合。

(2)sql語句的拼寫,我們可以提供一套公共sql語句模板,然后在具體實體對象操作的時候將實體對象的屬性名稱和屬性值當作參數拼接進去,組裝成完整的sql語句(例如java體系中的Mybatis框架)或者依舊采用封裝一套淺顯易懂的Api,Api內部通過對應方法和實體對象的組裝成sql語句(例如.Net體系中EntityFramework框架)

(3)最重要的兩個問題解決完之后,我們可以在框架中做一些對我們有幫助的其他事情。ORM框架做的最多的便是“緩存”。

作為程序員應該掌握的基礎知識,數據庫操作是要和硬盤打交道的,而程序是在內存中運行的,操作內存的速度要比操作硬盤快數十倍以上,可見一個訪問量較高的大型系統很容易由于數據庫操作過于頻繁而拖慢整體速度,從而影響系統的使用。因此,ORM框架要幫助我們減少數據庫的訪問,加快系統速度。

ORM框架的緩存系統一般是較為復雜的,而且每種ORM框架對緩存的實現機制都是不同的。整體的思路卻是一致的,對訪問頻率較高的數據進行緩存,并在對數據編輯的時候要對緩存進行更新,以免出現數據不一致的問題。詳細的緩存實現策略這里不一一贅述,感興趣可以針對某個ORM框架進行剖析。

(三)ORM的優缺點

優點:

(1)ORM框架降低了學習門檻,一個對sql語句并不熟悉的開發人員也可以很容易通過簡易的ORM框架Api進行數據庫的操作。

(2)提高了開發效率,ORM使我們減少很多繁瑣重復的工作量,讓我們的注意力集中在實現業務上。

(3)一定程度上提高了程序的響應速度。

弊端:

(1)框架會自動生成Sql語句,所有場景的sql語句都是同一套模板,難以自動針對場景對sql語句進行良好的優化,某種場景下很容易生成執行很慢的sql語句。如果讓DBA看到這樣的執行sql,必定引來抓狂崩潰。

(2)ORM框架只是為了滿足絕大多數的場景而生的,特殊需要優化sql的場景下,我們完全可以直接使用驅動手動執行sql或使用ORM框架內提供的sql語句api進行自定義sql語句。

總結

以上是生活随笔為你收集整理的sql注入pythonpoco_.NET EF(Entity Framework)详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

色一情一乱一伦一区二区三欧美 | 正在播放老肥熟妇露脸 | 真人与拘做受免费视频一 | 成人免费视频视频在线观看 免费 | 少妇无码一区二区二三区 | 内射老妇bbwx0c0ck | 久久亚洲精品成人无码 | 午夜精品久久久久久久 | 久久精品视频在线看15 | 亚洲综合在线一区二区三区 | 久久久久久亚洲精品a片成人 | 99精品国产综合久久久久五月天 | 永久免费观看美女裸体的网站 | 国产情侣作爱视频免费观看 | 成年美女黄网站色大免费视频 | 日韩精品无码一本二本三本色 | 99久久久无码国产精品免费 | 伊人久久大香线焦av综合影院 | 国精品人妻无码一区二区三区蜜柚 | 一本久道久久综合婷婷五月 | 欧美 日韩 人妻 高清 中文 | 欧美精品无码一区二区三区 | 国产人成高清在线视频99最全资源 | 永久免费精品精品永久-夜色 | 国产乱人无码伦av在线a | 亚洲国产精品久久人人爱 | 亚洲色欲久久久综合网东京热 | 红桃av一区二区三区在线无码av | 帮老师解开蕾丝奶罩吸乳网站 | 国产成人无码区免费内射一片色欲 | 欧美亚洲日韩国产人成在线播放 | 亚洲国产午夜精品理论片 | 亚洲成色在线综合网站 | 色一情一乱一伦 | 日本饥渴人妻欲求不满 | 中文字幕人妻无码一区二区三区 | 麻豆国产人妻欲求不满 | 国产精品资源一区二区 | 精品国精品国产自在久国产87 | 伊在人天堂亚洲香蕉精品区 | 国产真实乱对白精彩久久 | 亚洲自偷自偷在线制服 | 青青青爽视频在线观看 | 强伦人妻一区二区三区视频18 | 中文字幕无码日韩专区 | 爱做久久久久久 | 色综合久久久无码网中文 | 3d动漫精品啪啪一区二区中 | 性色欲情网站iwww九文堂 | 色婷婷综合中文久久一本 | 日韩精品a片一区二区三区妖精 | 日本丰满护士爆乳xxxx | 少妇人妻大乳在线视频 | 久久久久久亚洲精品a片成人 | 性生交大片免费看女人按摩摩 | 又黄又爽又色的视频 | 欧美精品国产综合久久 | 国产成人无码av一区二区 | 男女性色大片免费网站 | 国产亚洲视频中文字幕97精品 | 99久久久无码国产精品免费 | 人妻少妇被猛烈进入中文字幕 | 无码人妻黑人中文字幕 | 高清无码午夜福利视频 | 亚洲一区二区三区香蕉 | 无码任你躁久久久久久久 | 欧美日本免费一区二区三区 | 亚洲成av人片天堂网无码】 | 色五月五月丁香亚洲综合网 | 欧美日韩一区二区免费视频 | 日本爽爽爽爽爽爽在线观看免 | 亚洲成av人片在线观看无码不卡 | 亚洲精品中文字幕久久久久 | 国产精品永久免费视频 | 男人的天堂av网站 | 黑人巨大精品欧美一区二区 | 国产av人人夜夜澡人人爽麻豆 | 偷窥日本少妇撒尿chinese | 午夜性刺激在线视频免费 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 成人试看120秒体验区 | 又大又硬又黄的免费视频 | 欧美日本精品一区二区三区 | 欧美zoozzooz性欧美 | 人妻少妇精品无码专区动漫 | a片免费视频在线观看 | 麻豆国产人妻欲求不满谁演的 | 国产精品无码永久免费888 | 色情久久久av熟女人妻网站 | 久久zyz资源站无码中文动漫 | 99久久无码一区人妻 | 中文无码伦av中文字幕 | 亚洲中文字幕乱码av波多ji | 久久国产精品萌白酱免费 | 无人区乱码一区二区三区 | 2020最新国产自产精品 | 又粗又大又硬又长又爽 | 久久无码人妻影院 | 在教室伦流澡到高潮hnp视频 | 精品欧洲av无码一区二区三区 | 99久久婷婷国产综合精品青草免费 | 人妻少妇精品视频专区 | 狠狠色色综合网站 | 无码播放一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 精品无码一区二区三区爱欲 | 日本精品人妻无码免费大全 | 日本精品久久久久中文字幕 | 亚洲国产av美女网站 | 精品国产乱码久久久久乱码 | 欧美人与动性行为视频 | 亚洲狠狠色丁香婷婷综合 | 国内揄拍国内精品少妇国语 | 亚洲 激情 小说 另类 欧美 | 性啪啪chinese东北女人 | 无码国内精品人妻少妇 | 伊人久久婷婷五月综合97色 | 性做久久久久久久免费看 | 久久久精品欧美一区二区免费 | 国产激情精品一区二区三区 | 精品无码成人片一区二区98 | 性生交片免费无码看人 | 欧美大屁股xxxxhd黑色 | 在线播放亚洲第一字幕 | 97se亚洲精品一区 | 高中生自慰www网站 | 天堂亚洲免费视频 | 色五月丁香五月综合五月 | 日韩人妻系列无码专区 | 国产内射老熟女aaaa | 国产精品无码久久av | 亚洲爆乳无码专区 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产麻豆精品一区二区三区v视界 | 国产人妻大战黑人第1集 | 少妇邻居内射在线 | 亚洲一区二区三区四区 | 国产办公室秘书无码精品99 | 在教室伦流澡到高潮hnp视频 | 国产乱子伦视频在线播放 | 亚洲乱亚洲乱妇50p | 人妻少妇被猛烈进入中文字幕 | 奇米影视7777久久精品人人爽 | 伊人久久婷婷五月综合97色 | 亚洲男女内射在线播放 | 成人亚洲精品久久久久 | 国产精品第一国产精品 | 国产精品无码久久av | 天堂亚洲2017在线观看 | 丰满少妇熟乱xxxxx视频 | 国产精品亚洲一区二区三区喷水 | 欧美午夜特黄aaaaaa片 | 欧美精品无码一区二区三区 | 人妻尝试又大又粗久久 | 日韩欧美中文字幕在线三区 | 久久综合激激的五月天 | 国产精品视频免费播放 | 狠狠综合久久久久综合网 | 任你躁在线精品免费 | 国产精品人妻一区二区三区四 | 国产精品美女久久久久av爽李琼 | 亚洲成a人片在线观看无码 | 国产精华av午夜在线观看 | 爽爽影院免费观看 | 国产偷国产偷精品高清尤物 | 老太婆性杂交欧美肥老太 | 久久久久se色偷偷亚洲精品av | 久久亚洲精品成人无码 | 性欧美大战久久久久久久 | 狂野欧美激情性xxxx | 欧美日本日韩 | 97精品国产97久久久久久免费 | 欧美肥老太牲交大战 | 国产香蕉尹人视频在线 | 宝宝好涨水快流出来免费视频 | 亚洲成av人影院在线观看 | 天天摸天天透天天添 | 理论片87福利理论电影 | 欧美 日韩 亚洲 在线 | 人妻天天爽夜夜爽一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 中国女人内谢69xxxx | 精品国产国产综合精品 | 国产欧美熟妇另类久久久 | 131美女爱做视频 | 黄网在线观看免费网站 | 西西人体www44rt大胆高清 | 日本一本二本三区免费 | 亚洲精品成人福利网站 | 婷婷五月综合缴情在线视频 | 亚洲爆乳精品无码一区二区三区 | 人妻夜夜爽天天爽三区 | 理论片87福利理论电影 | 麻豆国产人妻欲求不满谁演的 | 日本一区二区三区免费高清 | 国产成人无码a区在线观看视频app | 国产成人无码a区在线观看视频app | 乱人伦人妻中文字幕无码久久网 | 300部国产真实乱 | 久久久久久亚洲精品a片成人 | 少妇久久久久久人妻无码 | 真人与拘做受免费视频 | 天天摸天天透天天添 | 亚洲国产精华液网站w | 老太婆性杂交欧美肥老太 | 日本www一道久久久免费榴莲 | 亚洲人成影院在线无码按摩店 | 天堂久久天堂av色综合 | 无码人妻精品一区二区三区不卡 | 狠狠色欧美亚洲狠狠色www | www国产亚洲精品久久网站 | 一本色道久久综合狠狠躁 | 欧洲精品码一区二区三区免费看 | 极品尤物被啪到呻吟喷水 | 日韩av无码一区二区三区 | 97无码免费人妻超级碰碰夜夜 | 国产成人综合色在线观看网站 | 中文字幕色婷婷在线视频 | 亚洲の无码国产の无码步美 | 老熟女乱子伦 | 亚洲熟悉妇女xxx妇女av | 窝窝午夜理论片影院 | 国产无av码在线观看 | 国产精品福利视频导航 | 一本精品99久久精品77 | 久久久久人妻一区精品色欧美 | 精品国产青草久久久久福利 | 色综合久久久久综合一本到桃花网 | 婷婷六月久久综合丁香 | 日本熟妇人妻xxxxx人hd | 国产精品理论片在线观看 | 一个人免费观看的www视频 | 玩弄人妻少妇500系列视频 | 久久婷婷五月综合色国产香蕉 | 国产suv精品一区二区五 | 精品少妇爆乳无码av无码专区 | 国产后入清纯学生妹 | 小sao货水好多真紧h无码视频 | 在线a亚洲视频播放在线观看 | 97人妻精品一区二区三区 | 国产精品人人妻人人爽 | 国产精品久久久久9999小说 | 亚洲国产精品久久人人爱 | 日日干夜夜干 | 欧美刺激性大交 | 午夜精品一区二区三区在线观看 | 无码人妻丰满熟妇区五十路百度 | 欧美丰满熟妇xxxx性ppx人交 | 无码人妻久久一区二区三区不卡 | 天海翼激烈高潮到腰振不止 | 亚洲综合无码久久精品综合 | 久久天天躁狠狠躁夜夜免费观看 | 日本爽爽爽爽爽爽在线观看免 | 日本肉体xxxx裸交 | 久久久久免费精品国产 | 人人澡人摸人人添 | 精品人妻中文字幕有码在线 | 亚洲综合另类小说色区 | 欧美野外疯狂做受xxxx高潮 | 亚洲精品国产第一综合99久久 | 中文无码伦av中文字幕 | 亚洲s色大片在线观看 | 玩弄少妇高潮ⅹxxxyw | 性色欲网站人妻丰满中文久久不卡 | 国产一精品一av一免费 | 国产亚洲精品久久久久久 | 精品无人区无码乱码毛片国产 | 亚洲精品一区三区三区在线观看 | 国产午夜亚洲精品不卡下载 | 亚洲中文字幕无码一久久区 | 国内精品一区二区三区不卡 | 久久天天躁夜夜躁狠狠 | 秋霞特色aa大片 | 又粗又大又硬又长又爽 | 亚洲va中文字幕无码久久不卡 | 国产精品久久精品三级 | 久久久久国色av免费观看性色 | 人妻少妇精品无码专区二区 | 国产口爆吞精在线视频 | 男女超爽视频免费播放 | 夜夜夜高潮夜夜爽夜夜爰爰 | 人妻中文无码久热丝袜 | 国产免费观看黄av片 | 亚洲精品综合一区二区三区在线 | 丰满诱人的人妻3 | 国产小呦泬泬99精品 | ass日本丰满熟妇pics | 国产麻豆精品一区二区三区v视界 | 欧洲vodafone精品性 | 丰满少妇女裸体bbw | 国产成人精品久久亚洲高清不卡 | 久久久久久久人妻无码中文字幕爆 | 无码人中文字幕 | 亚洲日韩精品欧美一区二区 | 丰满妇女强制高潮18xxxx | 天天躁夜夜躁狠狠是什么心态 | 国产精品毛多多水多 | 亚洲国产精品一区二区美利坚 | 日本一卡二卡不卡视频查询 | 国产精品久久久 | 成人精品视频一区二区 | 国产明星裸体无码xxxx视频 | 最近的中文字幕在线看视频 | 2020久久超碰国产精品最新 | 自拍偷自拍亚洲精品被多人伦好爽 | 色综合久久久无码网中文 | 一本色道久久综合亚洲精品不卡 | 玩弄少妇高潮ⅹxxxyw | 国产69精品久久久久app下载 | 精品无码一区二区三区的天堂 | 在线亚洲高清揄拍自拍一品区 | 亚洲第一网站男人都懂 | 精品国产aⅴ无码一区二区 | 300部国产真实乱 | 丝袜人妻一区二区三区 | 国产精品香蕉在线观看 | 欧洲精品码一区二区三区免费看 | 老头边吃奶边弄进去呻吟 | 狂野欧美性猛xxxx乱大交 | 欧美人与牲动交xxxx | 亚洲精品一区二区三区婷婷月 | 午夜无码人妻av大片色欲 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 男人的天堂2018无码 | 国产精品久久久久久亚洲影视内衣 | 国产精华av午夜在线观看 | 日日天干夜夜狠狠爱 | 国产精品久久久久久久9999 | 成人免费视频视频在线观看 免费 | 亚洲精品无码国产 | 欧美性色19p | 久久综合给合久久狠狠狠97色 | 5858s亚洲色大成网站www | 无码av岛国片在线播放 | 国产艳妇av在线观看果冻传媒 | 久久精品成人欧美大片 | 少妇高潮一区二区三区99 | 国产成人无码区免费内射一片色欲 | 国产在热线精品视频 | 一个人看的www免费视频在线观看 | 中文字幕人妻丝袜二区 | 欧美性色19p | 亚洲国产精品无码一区二区三区 | 乱人伦中文视频在线观看 | 无码精品国产va在线观看dvd | 久久久久久久人妻无码中文字幕爆 | 亚洲啪av永久无码精品放毛片 | 亚洲国产精品久久人人爱 | 国产午夜手机精彩视频 | 性生交大片免费看女人按摩摩 | 久久99国产综合精品 | 中文无码成人免费视频在线观看 | 国产97人人超碰caoprom | 色综合久久久久综合一本到桃花网 | 99精品视频在线观看免费 | 中文字幕色婷婷在线视频 | 国产乱人伦偷精品视频 | 日本饥渴人妻欲求不满 | 成人三级无码视频在线观看 | 国产艳妇av在线观看果冻传媒 | 国产内射老熟女aaaa | 久久综合激激的五月天 | 国产精品久久久久7777 | 色婷婷av一区二区三区之红樱桃 | 人妻少妇精品视频专区 | 少妇激情av一区二区 | a片免费视频在线观看 | 久久天天躁狠狠躁夜夜免费观看 | 熟妇人妻无码xxx视频 | а√资源新版在线天堂 | 无码福利日韩神码福利片 | 乱人伦人妻中文字幕无码久久网 | 国产精品福利视频导航 | 久久无码人妻影院 | 97久久精品无码一区二区 | 国产麻豆精品一区二区三区v视界 | 无码人中文字幕 | 男女超爽视频免费播放 | 成人精品一区二区三区中文字幕 | 久久国产劲爆∧v内射 | 人妻互换免费中文字幕 | 麻花豆传媒剧国产免费mv在线 | 国产成人无码av在线影院 | 动漫av一区二区在线观看 | 免费网站看v片在线18禁无码 | 无码精品国产va在线观看dvd | 欧美成人高清在线播放 | 色综合久久久无码中文字幕 | 国产无遮挡又黄又爽又色 | 亚洲色偷偷偷综合网 | 狠狠色色综合网站 | 久久精品国产99精品亚洲 | 久精品国产欧美亚洲色aⅴ大片 | 99久久久国产精品无码免费 | 一本久久a久久精品亚洲 | 亚洲欧美日韩国产精品一区二区 | 人妻少妇精品无码专区动漫 | 中文字幕乱码人妻二区三区 | 国产成人精品一区二区在线小狼 | 激情五月综合色婷婷一区二区 | 亚洲国产欧美在线成人 | 日日摸天天摸爽爽狠狠97 | 久久综合狠狠综合久久综合88 | 国产精品.xx视频.xxtv | 欧美日韩一区二区免费视频 | 2019nv天堂香蕉在线观看 | 亚洲人亚洲人成电影网站色 | 国产成人综合美国十次 | 国精产品一品二品国精品69xx | 美女毛片一区二区三区四区 | 中文字幕乱码人妻无码久久 | 久激情内射婷内射蜜桃人妖 | 免费无码午夜福利片69 | 欧美一区二区三区视频在线观看 | 国产特级毛片aaaaaaa高清 | 日本xxxx色视频在线观看免费 | 色五月五月丁香亚洲综合网 | 人人妻人人澡人人爽欧美精品 | 丰满少妇弄高潮了www | 一区二区三区高清视频一 | 日日天日日夜日日摸 | 人妻aⅴ无码一区二区三区 | 免费人成网站视频在线观看 | 中文字幕无码av波多野吉衣 | 亚洲乱码国产乱码精品精 | 欧美精品无码一区二区三区 | 亚洲自偷自偷在线制服 | 一二三四在线观看免费视频 | 少妇高潮喷潮久久久影院 | 扒开双腿吃奶呻吟做受视频 | 精品乱码久久久久久久 | 伊人久久大香线焦av综合影院 | 人妻互换免费中文字幕 | 4hu四虎永久在线观看 | 激情国产av做激情国产爱 | 久久国产精品_国产精品 | 欧美国产日韩亚洲中文 | 亚洲一区av无码专区在线观看 | 国产xxx69麻豆国语对白 | 激情爆乳一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 精品国偷自产在线 | 久久人人爽人人爽人人片av高清 | 亚洲色大成网站www国产 | 国产亚洲人成a在线v网站 | 日韩精品无码一本二本三本色 | 四虎国产精品一区二区 | 久久久久成人精品免费播放动漫 | 国产成人精品一区二区在线小狼 | 伊人久久大香线焦av综合影院 | 少妇无套内谢久久久久 | 午夜无码人妻av大片色欲 | 精品久久久久久亚洲精品 | 国产内射爽爽大片视频社区在线 | 久久亚洲中文字幕精品一区 | 日本高清一区免费中文视频 | 精品久久综合1区2区3区激情 | 97色伦图片97综合影院 | 日本又色又爽又黄的a片18禁 | 精品偷拍一区二区三区在线看 | 欧美丰满少妇xxxx性 | 中文字幕无码视频专区 | 成人性做爰aaa片免费看 | 国産精品久久久久久久 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产精品国产自线拍免费软件 | 国产农村妇女高潮大叫 | 在线精品亚洲一区二区 | 亚洲中文字幕va福利 | 偷窥日本少妇撒尿chinese | a在线观看免费网站大全 | 天天拍夜夜添久久精品大 | 久久久久久久女国产乱让韩 | 日韩欧美成人免费观看 | 成人三级无码视频在线观看 | 国产精品理论片在线观看 | 性色欲情网站iwww九文堂 | 四十如虎的丰满熟妇啪啪 | 中文字幕色婷婷在线视频 | 久久久精品成人免费观看 | 性欧美牲交xxxxx视频 | 色一情一乱一伦一视频免费看 | 无码人妻久久一区二区三区不卡 | 亚洲成熟女人毛毛耸耸多 | 天堂无码人妻精品一区二区三区 | 国内精品久久毛片一区二区 | 欧美35页视频在线观看 | a片免费视频在线观看 | 国产精品人人妻人人爽 | 真人与拘做受免费视频 | 免费无码的av片在线观看 | 婷婷五月综合激情中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 99久久久无码国产aaa精品 | 亚洲成av人综合在线观看 | 2020久久香蕉国产线看观看 | 亚洲精品中文字幕乱码 | 国产亚洲欧美日韩亚洲中文色 | 精品一区二区三区无码免费视频 | 蜜桃视频插满18在线观看 | 免费国产成人高清在线观看网站 | 成人性做爰aaa片免费看 | 久久亚洲精品成人无码 | 国产人妻精品午夜福利免费 | 亚洲狠狠婷婷综合久久 | 青草青草久热国产精品 | 色五月五月丁香亚洲综合网 | 亚洲中文字幕在线无码一区二区 | 午夜福利一区二区三区在线观看 | 久久综合狠狠综合久久综合88 | 少女韩国电视剧在线观看完整 | 久久99精品国产.久久久久 | 在线播放免费人成毛片乱码 | 六月丁香婷婷色狠狠久久 | 亚洲国产精品美女久久久久 | 一本久久伊人热热精品中文字幕 | 国产乱子伦视频在线播放 | 中文字幕+乱码+中文字幕一区 | 成人影院yy111111在线观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 乱人伦人妻中文字幕无码 | 999久久久国产精品消防器材 | 国产在线一区二区三区四区五区 | 97久久精品无码一区二区 | 一本一道久久综合久久 | 久久久久亚洲精品中文字幕 | 免费人成网站视频在线观看 | 欧美日韩综合一区二区三区 | 国产精品美女久久久网av | 午夜精品久久久久久久久 | 在线播放无码字幕亚洲 | 日韩精品乱码av一区二区 | 久久人妻内射无码一区三区 | 天天躁日日躁狠狠躁免费麻豆 | 久久亚洲国产成人精品性色 | 大肉大捧一进一出视频出来呀 | 久久亚洲中文字幕无码 | 国产成人无码专区 | 性欧美疯狂xxxxbbbb | 久久亚洲中文字幕无码 | 亚洲国产av精品一区二区蜜芽 | 久久亚洲中文字幕精品一区 | 成人无码视频免费播放 | 内射白嫩少妇超碰 | 麻豆国产人妻欲求不满谁演的 | 波多野结衣乳巨码无在线观看 | 女人被爽到呻吟gif动态图视看 | 人妻少妇精品视频专区 | 欧美国产日韩亚洲中文 | 亚洲精品一区二区三区大桥未久 | 六月丁香婷婷色狠狠久久 | 国产又粗又硬又大爽黄老大爷视 | 国产精品igao视频网 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲理论电影在线观看 | 2020最新国产自产精品 | 久久久久久久人妻无码中文字幕爆 | 香蕉久久久久久av成人 | 日本肉体xxxx裸交 | 亚洲成a人片在线观看无码3d | 美女极度色诱视频国产 | 久久国产自偷自偷免费一区调 | 欧美日本精品一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 成人免费无码大片a毛片 | 色婷婷综合中文久久一本 | 国产av一区二区三区最新精品 | 欧洲欧美人成视频在线 | 亚洲国产精品一区二区美利坚 | 欧美日韩一区二区三区自拍 | 成人无码视频免费播放 | 午夜丰满少妇性开放视频 | 国产成人无码a区在线观看视频app | 久久久久久国产精品无码下载 | 亚洲精品国产精品乱码不卡 | 精品国产精品久久一区免费式 | 少妇无码吹潮 | 成人欧美一区二区三区黑人 | 国产亚洲人成在线播放 | 色婷婷欧美在线播放内射 | 狠狠cao日日穞夜夜穞av | 荡女精品导航 | 精品亚洲韩国一区二区三区 | 人妻熟女一区 | 欧洲熟妇色 欧美 | 人人妻人人澡人人爽人人精品 | 亚无码乱人伦一区二区 | 国产精品爱久久久久久久 | 精品偷自拍另类在线观看 | 亚洲国产欧美在线成人 | 久久99精品久久久久久动态图 | 无码毛片视频一区二区本码 | 亚洲日韩av片在线观看 | 在线播放亚洲第一字幕 | 波多野结衣乳巨码无在线观看 | 久久国产精品精品国产色婷婷 | 人妻少妇精品久久 | 久久久久人妻一区精品色欧美 | 熟妇人妻中文av无码 | 日本精品久久久久中文字幕 | 人人爽人人澡人人人妻 | 一本久道久久综合婷婷五月 | 天下第一社区视频www日本 | 成在人线av无码免观看麻豆 | 国产精品多人p群无码 | 久久久国产精品无码免费专区 | 国产精品人妻一区二区三区四 | 国产极品视觉盛宴 | 日韩人妻系列无码专区 | 国语自产偷拍精品视频偷 | 久久久久亚洲精品男人的天堂 | 人人爽人人澡人人高潮 | 最近免费中文字幕中文高清百度 | 亚洲色www成人永久网址 | 全黄性性激高免费视频 | aⅴ亚洲 日韩 色 图网站 播放 | 亲嘴扒胸摸屁股激烈网站 | 亚洲精品鲁一鲁一区二区三区 | 亚洲国产精品美女久久久久 | 丁香啪啪综合成人亚洲 | 国产精品-区区久久久狼 | 国产电影无码午夜在线播放 | 野外少妇愉情中文字幕 | 欧美国产日韩久久mv | 精品偷自拍另类在线观看 | 噜噜噜亚洲色成人网站 | 午夜嘿嘿嘿影院 | 国产精品永久免费视频 | 亚洲欧美色中文字幕在线 | 樱花草在线播放免费中文 | 在线 国产 欧美 亚洲 天堂 | 一本大道伊人av久久综合 | 国产xxx69麻豆国语对白 | 九月婷婷人人澡人人添人人爽 | 国产黄在线观看免费观看不卡 | 久久99精品国产.久久久久 | 激情综合激情五月俺也去 | 成人免费视频视频在线观看 免费 | 成人精品天堂一区二区三区 | 伊人久久婷婷五月综合97色 | 国产在线精品一区二区三区直播 | 麻豆成人精品国产免费 | 欧美日韩人成综合在线播放 | 无码av岛国片在线播放 | 国产色在线 | 国产 | 国产精品第一区揄拍无码 | 精品久久久无码人妻字幂 | 欧美第一黄网免费网站 | 欧美精品国产综合久久 | 无码福利日韩神码福利片 | 亚洲人亚洲人成电影网站色 | 久久久久成人精品免费播放动漫 | 无码精品国产va在线观看dvd | 国产精品第一区揄拍无码 | 国产亚洲精品久久久闺蜜 | 丰满少妇人妻久久久久久 | 亚洲日韩av一区二区三区中文 | 99久久婷婷国产综合精品青草免费 | 超碰97人人做人人爱少妇 | 国产口爆吞精在线视频 | 日本乱人伦片中文三区 | 99久久亚洲精品无码毛片 | 亚洲乱码日产精品bd | 国产精品福利视频导航 | 国产人妻人伦精品1国产丝袜 | 日本一卡二卡不卡视频查询 | 97无码免费人妻超级碰碰夜夜 | 午夜丰满少妇性开放视频 | 欧美黑人性暴力猛交喷水 | 女人被男人爽到呻吟的视频 | 成人aaa片一区国产精品 | 扒开双腿疯狂进出爽爽爽视频 | 少妇无码吹潮 | 人人超人人超碰超国产 | 亚洲成a人片在线观看日本 | 99久久精品日本一区二区免费 | 牲欲强的熟妇农村老妇女 | 亚洲熟妇色xxxxx欧美老妇y | 国产黄在线观看免费观看不卡 | 国产亚洲日韩欧美另类第八页 | a在线亚洲男人的天堂 | 精品人妻人人做人人爽夜夜爽 | 欧美自拍另类欧美综合图片区 | 日本va欧美va欧美va精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 婷婷丁香六月激情综合啪 | 国产精品免费大片 | 国产69精品久久久久app下载 | 人妻中文无码久热丝袜 | 国产精品二区一区二区aⅴ污介绍 | 国产麻豆精品一区二区三区v视界 | 真人与拘做受免费视频 | 亚洲国产一区二区三区在线观看 | 欧美日韩色另类综合 | 欧美丰满少妇xxxx性 | 国内丰满熟女出轨videos | 国产 浪潮av性色四虎 | 最新版天堂资源中文官网 | 亚洲精品成人av在线 | 熟女少妇人妻中文字幕 | 免费中文字幕日韩欧美 | 高清无码午夜福利视频 | 男人的天堂2018无码 | 激情内射日本一区二区三区 | 久久综合香蕉国产蜜臀av | 国产精品高潮呻吟av久久 | 夜夜高潮次次欢爽av女 | 久久久久亚洲精品男人的天堂 | 任你躁国产自任一区二区三区 | 亚洲日韩精品欧美一区二区 | 99精品无人区乱码1区2区3区 | 久久精品国产日本波多野结衣 | 国产成人无码a区在线观看视频app | 久久久中文字幕日本无吗 | 性色av无码免费一区二区三区 | 久久久久99精品国产片 | 日本丰满熟妇videos | 欧美自拍另类欧美综合图片区 | 精品国产精品久久一区免费式 | 在线播放免费人成毛片乱码 | 乌克兰少妇xxxx做受 | 一本大道伊人av久久综合 | 内射欧美老妇wbb | 中文字幕av无码一区二区三区电影 | 人妻少妇精品无码专区动漫 | 女人被爽到呻吟gif动态图视看 | √天堂中文官网8在线 | 亚洲乱码中文字幕在线 | 国产亚洲精品久久久闺蜜 | 久久精品无码一区二区三区 | a在线亚洲男人的天堂 | 久久99精品久久久久婷婷 | 又大又硬又黄的免费视频 | 国产熟女一区二区三区四区五区 | av小次郎收藏 | 国产午夜无码视频在线观看 | 久久人人爽人人爽人人片ⅴ | 国精产品一区二区三区 | 性啪啪chinese东北女人 | 国产麻豆精品一区二区三区v视界 | 精品熟女少妇av免费观看 | 三级4级全黄60分钟 | 在线观看国产一区二区三区 | 欧美喷潮久久久xxxxx | 国产精品99爱免费视频 | 无码乱肉视频免费大全合集 | 97夜夜澡人人爽人人喊中国片 | 久久综合网欧美色妞网 | 97久久超碰中文字幕 | 国产亚洲精品久久久久久久 | 漂亮人妻洗澡被公强 日日躁 | 亚洲国产精品毛片av不卡在线 | 99久久精品日本一区二区免费 | 十八禁真人啪啪免费网站 | 久久久久久亚洲精品a片成人 | 午夜无码人妻av大片色欲 | 亚洲国产综合无码一区 | 成人无码精品一区二区三区 | 无码福利日韩神码福利片 | 人人妻人人澡人人爽精品欧美 | 国产精品多人p群无码 | 日韩 欧美 动漫 国产 制服 | 18禁黄网站男男禁片免费观看 | 亚洲狠狠婷婷综合久久 | 精品国精品国产自在久国产87 | 熟妇人妻激情偷爽文 | 野外少妇愉情中文字幕 | 中文字幕av日韩精品一区二区 | 精品国产福利一区二区 | 亚洲精品久久久久久一区二区 | 国产精品亚洲а∨无码播放麻豆 | 岛国片人妻三上悠亚 | 国产人妻大战黑人第1集 | 久久久久亚洲精品中文字幕 | 久9re热视频这里只有精品 | 97夜夜澡人人双人人人喊 | 一本久道久久综合狠狠爱 | 久久久久久国产精品无码下载 | 久久久久久av无码免费看大片 | 国产超碰人人爽人人做人人添 | 国产农村乱对白刺激视频 | 国产亚洲精品久久久ai换 | 伊人久久大香线焦av综合影院 | 国产精品人人妻人人爽 | 中文字幕无码免费久久99 | 亚洲人亚洲人成电影网站色 | 日本大香伊一区二区三区 | 国产亚洲精品久久久久久久 | 精品日本一区二区三区在线观看 | 无码午夜成人1000部免费视频 | 中文字幕乱妇无码av在线 | 久久久久久av无码免费看大片 | 无码精品国产va在线观看dvd | 国产精品免费大片 | 色爱情人网站 | 成人无码视频免费播放 | 国产精品99爱免费视频 | 中文字幕无码热在线视频 | 日韩欧美中文字幕在线三区 | 又大又硬又黄的免费视频 | 国内精品人妻无码久久久影院 | a国产一区二区免费入口 | 国产亚洲tv在线观看 | 99精品视频在线观看免费 | 18无码粉嫩小泬无套在线观看 | 在线a亚洲视频播放在线观看 | 亚洲精品成人福利网站 | 国产熟女一区二区三区四区五区 | 国产精品久久久久影院嫩草 | 欧美 日韩 亚洲 在线 | 欧美熟妇另类久久久久久多毛 | 99久久婷婷国产综合精品青草免费 | 又大又紧又粉嫩18p少妇 | 国产国产精品人在线视 | 18禁止看的免费污网站 | 男女爱爱好爽视频免费看 | 久久久久se色偷偷亚洲精品av | 欧洲熟妇精品视频 | 久久精品中文闷骚内射 | 国产精品国产三级国产专播 | 极品尤物被啪到呻吟喷水 | 国产成人无码av片在线观看不卡 | 久久久久av无码免费网 | 青青草原综合久久大伊人精品 | 亚洲精品一区二区三区在线观看 | 国产成人综合色在线观看网站 | 国产两女互慰高潮视频在线观看 | 人人妻人人澡人人爽欧美精品 | 亚洲色www成人永久网址 | 波多野结衣高清一区二区三区 | 午夜时刻免费入口 | 嫩b人妻精品一区二区三区 | 久久亚洲精品成人无码 | 国产精品亚洲专区无码不卡 | 天海翼激烈高潮到腰振不止 | 牲交欧美兽交欧美 | 在线精品国产一区二区三区 | 东京热无码av男人的天堂 | 免费国产成人高清在线观看网站 | 久久99精品久久久久久动态图 | 成 人 网 站国产免费观看 | 亚洲 激情 小说 另类 欧美 | av小次郎收藏 | 无码人妻精品一区二区三区不卡 | 午夜福利不卡在线视频 | 兔费看少妇性l交大片免费 | 日本丰满熟妇videos | 熟妇人妻无乱码中文字幕 | 亚洲 日韩 欧美 成人 在线观看 | 欧美丰满老熟妇xxxxx性 | 亚洲国产日韩a在线播放 | 露脸叫床粗话东北少妇 | 久久人人爽人人爽人人片av高清 | 黑人巨大精品欧美黑寡妇 | 亚洲精品久久久久avwww潮水 | 久久久久成人精品免费播放动漫 | 97se亚洲精品一区 | 国产精品对白交换视频 | 国产无遮挡又黄又爽又色 | 东京无码熟妇人妻av在线网址 | 精品乱码久久久久久久 | 少妇久久久久久人妻无码 | 99久久婷婷国产综合精品青草免费 | 18无码粉嫩小泬无套在线观看 | 亚洲日韩一区二区 | 午夜免费福利小电影 | 性欧美大战久久久久久久 | 精品亚洲韩国一区二区三区 | 女高中生第一次破苞av | 国产精品美女久久久久av爽李琼 | 最新版天堂资源中文官网 | 精品人人妻人人澡人人爽人人 | 伊人久久大香线蕉亚洲 | 在教室伦流澡到高潮hnp视频 | 国内少妇偷人精品视频 | 国产深夜福利视频在线 | 成人欧美一区二区三区 | 一本久久a久久精品亚洲 | 中文字幕无码日韩专区 | 久久亚洲精品成人无码 | 中文字幕无码av激情不卡 | 日日碰狠狠躁久久躁蜜桃 | 久久国产精品萌白酱免费 | 天堂久久天堂av色综合 | 天天躁夜夜躁狠狠是什么心态 | 图片区 小说区 区 亚洲五月 | 天天做天天爱天天爽综合网 | 久久综合激激的五月天 | 成人无码影片精品久久久 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲日本一区二区三区在线 | 四虎永久在线精品免费网址 | 国产网红无码精品视频 | 激情综合激情五月俺也去 | 国产欧美亚洲精品a | 奇米影视7777久久精品人人爽 | 夜夜影院未满十八勿进 | 秋霞特色aa大片 | 久久久久久国产精品无码下载 | 亚洲乱亚洲乱妇50p | 国产在线精品一区二区高清不卡 | 欧美丰满老熟妇xxxxx性 | 丁香啪啪综合成人亚洲 | 国产口爆吞精在线视频 | av小次郎收藏 | 学生妹亚洲一区二区 | 国产人妖乱国产精品人妖 | 丰满少妇弄高潮了www | 亚洲综合无码一区二区三区 | √8天堂资源地址中文在线 | 日日橹狠狠爱欧美视频 | 午夜嘿嘿嘿影院 | 久久99精品久久久久久动态图 | 久久久久免费看成人影片 | 亚洲国产精品美女久久久久 | 蜜桃视频韩日免费播放 | 国产精品亚洲综合色区韩国 | 伊人久久婷婷五月综合97色 | 久久综合九色综合欧美狠狠 | 无套内谢的新婚少妇国语播放 | 人妻尝试又大又粗久久 | 日韩精品无码一本二本三本色 | 少妇无码一区二区二三区 | 精品厕所偷拍各类美女tp嘘嘘 | 成人欧美一区二区三区黑人免费 | 亚洲乱码中文字幕在线 | 97久久精品无码一区二区 | 亚洲熟妇色xxxxx欧美老妇 | 婷婷丁香五月天综合东京热 | 国产精华av午夜在线观看 | 国产精品18久久久久久麻辣 | 中文字幕人妻丝袜二区 | 黑人巨大精品欧美一区二区 | 亚洲熟女一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲综合精品香蕉久久网 | 九月婷婷人人澡人人添人人爽 | 精品无码国产自产拍在线观看蜜 | 欧美人妻一区二区三区 | 国产色精品久久人妻 | 国产精品永久免费视频 | 亚洲欧美日韩国产精品一区二区 | 日韩精品无码一本二本三本色 | 人妻熟女一区 | 国产成人无码a区在线观看视频app | 日韩精品一区二区av在线 | 人人澡人人妻人人爽人人蜜桃 | 日欧一片内射va在线影院 | 久久久久国色av免费观看性色 | 性欧美牲交在线视频 | 欧美野外疯狂做受xxxx高潮 | www成人国产高清内射 | 国产精品人妻一区二区三区四 | 久久精品人妻少妇一区二区三区 | 少妇激情av一区二区 | 色综合久久久无码网中文 | 国产无遮挡吃胸膜奶免费看 | 一区二区三区高清视频一 | 国产亚洲精品久久久久久久久动漫 | 又色又爽又黄的美女裸体网站 | 久久久久久久女国产乱让韩 | 97se亚洲精品一区 | 人妻无码αv中文字幕久久琪琪布 | 色诱久久久久综合网ywww | 成人aaa片一区国产精品 | 久久精品人人做人人综合试看 | 国产亚洲精品久久久久久国模美 | 精品国产av色一区二区深夜久久 | 麻豆果冻传媒2021精品传媒一区下载 | 精品国产一区二区三区四区在线看 | 成在人线av无码免观看麻豆 | 久久久久久a亚洲欧洲av冫 | 成人一区二区免费视频 | 国产精品久久久久久无码 | 中文字幕无码人妻少妇免费 | 国产一区二区三区精品视频 | 久久久久免费看成人影片 | 久久99精品国产.久久久久 | 无码人中文字幕 | 国产情侣作爱视频免费观看 | 精品欧洲av无码一区二区三区 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产精品人人妻人人爽 | 久久精品无码一区二区三区 | 亚洲国产精品成人久久蜜臀 | 亚洲国精产品一二二线 | 国产suv精品一区二区五 | 人人妻人人澡人人爽欧美精品 | 亚洲 a v无 码免 费 成 人 a v | 久久久精品成人免费观看 | 人人爽人人澡人人人妻 | 老熟妇仑乱视频一区二区 | 国产精品美女久久久久av爽李琼 | 乱码午夜-极国产极内射 | 久久久婷婷五月亚洲97号色 | 性欧美牲交在线视频 | 亚洲精品一区二区三区在线观看 | 小鲜肉自慰网站xnxx | 无码国产乱人伦偷精品视频 | 荡女精品导航 | 丰满少妇弄高潮了www | 国产精品成人av在线观看 | 久久综合香蕉国产蜜臀av | 激情内射日本一区二区三区 | 波多野结衣 黑人 | 欧美人与牲动交xxxx | 丰满少妇弄高潮了www | 色综合久久久无码中文字幕 | 激情国产av做激情国产爱 | 国产乱子伦视频在线播放 | 免费国产成人高清在线观看网站 | 99久久婷婷国产综合精品青草免费 | 牲交欧美兽交欧美 | 国产内射爽爽大片视频社区在线 | 日本精品高清一区二区 | 国产人妻人伦精品1国产丝袜 | 一本加勒比波多野结衣 | 亚洲欧洲中文日韩av乱码 | 亚洲大尺度无码无码专区 | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品鲁一鲁一区二区三区 | 亚洲综合精品香蕉久久网 | 国产97在线 | 亚洲 | 狠狠色噜噜狠狠狠7777奇米 | 丰满岳乱妇在线观看中字无码 | 日日摸夜夜摸狠狠摸婷婷 | 无码一区二区三区在线观看 | 永久免费观看国产裸体美女 | 午夜福利试看120秒体验区 | 亚洲色欲色欲天天天www | 久久国产精品二国产精品 | 国产九九九九九九九a片 | 精品久久久中文字幕人妻 | 中文毛片无遮挡高清免费 | 永久黄网站色视频免费直播 | 丝袜 中出 制服 人妻 美腿 | 久久99精品国产麻豆 | 国产成人无码区免费内射一片色欲 | 欧美日韩亚洲国产精品 | 俄罗斯老熟妇色xxxx | 日本大乳高潮视频在线观看 | 国産精品久久久久久久 | 亚洲中文字幕久久无码 | 国产9 9在线 | 中文 | 内射巨臀欧美在线视频 | 国产莉萝无码av在线播放 | 欧美喷潮久久久xxxxx | 中文字幕av无码一区二区三区电影 | 极品嫩模高潮叫床 | 亚洲aⅴ无码成人网站国产app | 丰满人妻精品国产99aⅴ | 亚洲精品国偷拍自产在线麻豆 | 99久久99久久免费精品蜜桃 | 熟女俱乐部五十路六十路av | 少妇高潮喷潮久久久影院 | 国产精品美女久久久 | 久在线观看福利视频 | 欧美国产日韩久久mv | 欧美人与禽zoz0性伦交 | 丝袜足控一区二区三区 | 久久综合久久自在自线精品自 | 久在线观看福利视频 | 伊人久久大香线蕉亚洲 | 国产精品久久久av久久久 | 国产精品久久久久久久影院 | 久久久精品国产sm最大网站 | 在线精品国产一区二区三区 | 未满成年国产在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 一本色道久久综合狠狠躁 | 亚洲精品久久久久久一区二区 | 在线播放无码字幕亚洲 | 国产极品视觉盛宴 | 永久免费精品精品永久-夜色 | 亚洲国产欧美日韩精品一区二区三区 | 天天爽夜夜爽夜夜爽 | 爽爽影院免费观看 | 亚洲精品成人福利网站 | 97夜夜澡人人爽人人喊中国片 | 中文无码成人免费视频在线观看 | 麻豆av传媒蜜桃天美传媒 | 欧美猛少妇色xxxxx | 欧美性猛交xxxx富婆 | 人人妻人人澡人人爽欧美精品 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 九月婷婷人人澡人人添人人爽 | 精品国偷自产在线 | 呦交小u女精品视频 | 综合人妻久久一区二区精品 | 久久 国产 尿 小便 嘘嘘 | 国产精品99久久精品爆乳 | 午夜男女很黄的视频 | 国产精品99久久精品爆乳 | 亚洲乱码中文字幕在线 | 国产乱人伦av在线无码 | 久久人妻内射无码一区三区 | 久久99精品久久久久久动态图 | 国产亚洲精品久久久久久大师 | 日本丰满熟妇videos | 一本久道久久综合婷婷五月 | 窝窝午夜理论片影院 | 大地资源中文第3页 | 性啪啪chinese东北女人 | 国产乱人伦偷精品视频 | 在教室伦流澡到高潮hnp视频 | 蜜桃视频插满18在线观看 | 国产又爽又猛又粗的视频a片 | 波多野结衣av一区二区全免费观看 | 一二三四在线观看免费视频 | 亚洲精品午夜国产va久久成人 | 国产精品美女久久久网av | 又大又硬又黄的免费视频 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲 激情 小说 另类 欧美 | 亚洲 另类 在线 欧美 制服 | 国产人妻人伦精品1国产丝袜 | 久久国产36精品色熟妇 | 亚洲自偷自偷在线制服 | 亚洲国产精品无码久久久久高潮 | 亚拍精品一区二区三区探花 | 最新国产乱人伦偷精品免费网站 | 精品国产青草久久久久福利 | 97精品国产97久久久久久免费 | 人人妻人人澡人人爽人人精品 | 国产精品办公室沙发 | 日韩亚洲欧美精品综合 | 免费观看又污又黄的网站 | 久9re热视频这里只有精品 | 九月婷婷人人澡人人添人人爽 | 成人一在线视频日韩国产 | 男人的天堂2018无码 | 欧美黑人巨大xxxxx | 国产又粗又硬又大爽黄老大爷视 | 亚洲精品国产第一综合99久久 | 丝袜足控一区二区三区 | 欧美老熟妇乱xxxxx | 国产精品高潮呻吟av久久 | 欧美freesex黑人又粗又大 | 免费乱码人妻系列无码专区 | 亚洲gv猛男gv无码男同 | 久久 国产 尿 小便 嘘嘘 | 亚洲人成影院在线观看 | 日本熟妇人妻xxxxx人hd | 精品乱码久久久久久久 | 乱人伦人妻中文字幕无码 | 乱码av麻豆丝袜熟女系列 | 亚洲午夜久久久影院 | 国产乱人偷精品人妻a片 | 男女猛烈xx00免费视频试看 | 国产麻豆精品精东影业av网站 | 乱中年女人伦av三区 | 性欧美牲交在线视频 | 国产人妻大战黑人第1集 | 亚洲另类伦春色综合小说 | 国产精品内射视频免费 | 欧美激情一区二区三区成人 | 少妇人妻偷人精品无码视频 | 色综合视频一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 狠狠色欧美亚洲狠狠色www | 少妇一晚三次一区二区三区 | 久久久久久久女国产乱让韩 | 四十如虎的丰满熟妇啪啪 | 国产人妻大战黑人第1集 | 精品无码一区二区三区的天堂 | 青青久在线视频免费观看 | 一本久道久久综合狠狠爱 | 久久久无码中文字幕久... | 久久久久免费看成人影片 | а√天堂www在线天堂小说 | 国产超碰人人爽人人做人人添 | 国产热a欧美热a在线视频 | 牲交欧美兽交欧美 | 日韩精品无码免费一区二区三区 | 久久亚洲中文字幕无码 | 亚洲中文字幕无码中文字在线 | 国产成人无码a区在线观看视频app | 免费人成网站视频在线观看 | 少妇高潮喷潮久久久影院 | 精品成在人线av无码免费看 | 亚洲精品久久久久久一区二区 | 国产精品国产自线拍免费软件 | 青青青爽视频在线观看 | 成人免费视频在线观看 | 18禁止看的免费污网站 | av人摸人人人澡人人超碰下载 | 日韩成人一区二区三区在线观看 | 六十路熟妇乱子伦 | 蜜桃视频插满18在线观看 | 领导边摸边吃奶边做爽在线观看 | 久久午夜夜伦鲁鲁片无码免费 | 丁香啪啪综合成人亚洲 | 粉嫩少妇内射浓精videos | √8天堂资源地址中文在线 | 成在人线av无码免观看麻豆 | 奇米影视7777久久精品人人爽 | 婷婷综合久久中文字幕蜜桃三电影 | 久久午夜无码鲁丝片秋霞 | 欧美xxxx黑人又粗又长 | 亚洲精品午夜无码电影网 | 国产偷抇久久精品a片69 | 蜜桃视频韩日免费播放 | 色诱久久久久综合网ywww | 亚洲国产精品无码一区二区三区 | 97无码免费人妻超级碰碰夜夜 | 99久久婷婷国产综合精品青草免费 | 欧洲熟妇精品视频 | 国产亚洲精品久久久久久 | 18精品久久久无码午夜福利 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 无码国内精品人妻少妇 | 天天做天天爱天天爽综合网 | 国产精品毛片一区二区 | 一本精品99久久精品77 | 97人妻精品一区二区三区 | 美女黄网站人色视频免费国产 | 日韩精品一区二区av在线 | 欧美日韩综合一区二区三区 | 亚洲s色大片在线观看 | 性欧美videos高清精品 | 亚洲国产av美女网站 | 免费无码午夜福利片69 | 亚洲天堂2017无码中文 | 在线天堂新版最新版在线8 | 乌克兰少妇性做爰 | 18无码粉嫩小泬无套在线观看 | 欧美一区二区三区视频在线观看 | 成人一在线视频日韩国产 | 强奷人妻日本中文字幕 | 4hu四虎永久在线观看 | 中文字幕无码日韩欧毛 | 乱码av麻豆丝袜熟女系列 | 亚洲中文字幕在线无码一区二区 | 亚洲精品一区二区三区大桥未久 | 97精品国产97久久久久久免费 | 丝袜足控一区二区三区 | 在线天堂新版最新版在线8 | 性欧美熟妇videofreesex | 国产成人午夜福利在线播放 | 国产激情无码一区二区 | 毛片内射-百度 | 国产午夜无码精品免费看 | 欧美日韩人成综合在线播放 | 三上悠亚人妻中文字幕在线 | 国产无套内射久久久国产 | 欧美亚洲国产一区二区三区 | 国产区女主播在线观看 | 最近免费中文字幕中文高清百度 | 久久成人a毛片免费观看网站 | 国产精品亚洲专区无码不卡 | 亚洲精品中文字幕久久久久 | 国色天香社区在线视频 | 国产成人午夜福利在线播放 | 一本久久a久久精品亚洲 | 老司机亚洲精品影院无码 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 牲欲强的熟妇农村老妇女视频 | 国产精品沙发午睡系列 | 无遮挡国产高潮视频免费观看 | 青春草在线视频免费观看 | 久久久国产精品无码免费专区 | 老司机亚洲精品影院 | 色欲av亚洲一区无码少妇 | 麻豆av传媒蜜桃天美传媒 | 日本乱人伦片中文三区 | 亚洲综合伊人久久大杳蕉 | 99精品久久毛片a片 | 日本精品人妻无码免费大全 | а√资源新版在线天堂 | 综合网日日天干夜夜久久 | 中文字幕无码免费久久99 | 成年美女黄网站色大免费全看 | 国产一区二区三区精品视频 | 久久精品丝袜高跟鞋 | 日本一本二本三区免费 | 水蜜桃av无码 | 亚洲精品一区二区三区大桥未久 | 夜夜夜高潮夜夜爽夜夜爰爰 | 人妻少妇精品无码专区动漫 | 久久久久se色偷偷亚洲精品av | 亚洲成a人片在线观看无码3d | 正在播放东北夫妻内射 | 夜夜高潮次次欢爽av女 | 999久久久国产精品消防器材 | 精品国产国产综合精品 | 欧美第一黄网免费网站 | 久久精品国产亚洲精品 | 国产日产欧产精品精品app | 日韩精品成人一区二区三区 | 乱中年女人伦av三区 | 亚洲一区二区三区国产精华液 | 国产成人精品必看 | 少妇高潮喷潮久久久影院 | 成熟妇人a片免费看网站 | 色窝窝无码一区二区三区色欲 | 亚洲国产av精品一区二区蜜芽 | 又粗又大又硬又长又爽 | 黄网在线观看免费网站 | 国产xxx69麻豆国语对白 | 久久久亚洲欧洲日产国码αv | 美女黄网站人色视频免费国产 | 久久久久久国产精品无码下载 | av在线亚洲欧洲日产一区二区 | 国精产品一区二区三区 | 2020最新国产自产精品 | 真人与拘做受免费视频一 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲色欲久久久综合网东京热 | 丝袜 中出 制服 人妻 美腿 | 亚洲精品一区二区三区婷婷月 | 国产另类ts人妖一区二区 | 日韩欧美群交p片內射中文 | 亚洲爆乳无码专区 | 日日摸天天摸爽爽狠狠97 | 久久无码中文字幕免费影院蜜桃 | 欧美亚洲日韩国产人成在线播放 | 内射欧美老妇wbb | 77777熟女视频在线观看 а天堂中文在线官网 | 色噜噜亚洲男人的天堂 | 亚洲中文字幕乱码av波多ji | 国产真人无遮挡作爱免费视频 | 国产三级精品三级男人的天堂 | 亚洲色无码一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 色综合久久88色综合天天 | 欧美老妇交乱视频在线观看 | 国内揄拍国内精品少妇国语 | 无码任你躁久久久久久久 | 日本xxxx色视频在线观看免费 | 精品熟女少妇av免费观看 | 欧美喷潮久久久xxxxx | 人妻少妇被猛烈进入中文字幕 | 亚洲爆乳精品无码一区二区三区 | 国产色在线 | 国产 | 婷婷五月综合缴情在线视频 | 亚洲精品午夜国产va久久成人 | 人妻有码中文字幕在线 | 又大又黄又粗又爽的免费视频 | 亚洲va中文字幕无码久久不卡 | 国产口爆吞精在线视频 | 波多野结衣av一区二区全免费观看 | 十八禁真人啪啪免费网站 | 女人被男人躁得好爽免费视频 | 欧美性生交xxxxx久久久 | 最新国产乱人伦偷精品免费网站 | 2020最新国产自产精品 | 免费无码的av片在线观看 | 亚洲另类伦春色综合小说 | 色老头在线一区二区三区 | 国产精华av午夜在线观看 | 人妻人人添人妻人人爱 | 男女猛烈xx00免费视频试看 | 日产国产精品亚洲系列 | 又大又紧又粉嫩18p少妇 | 男女猛烈xx00免费视频试看 | 大屁股大乳丰满人妻 | 初尝人妻少妇中文字幕 | 亚洲熟熟妇xxxx | 一区二区三区高清视频一 | 免费乱码人妻系列无码专区 | 国产激情一区二区三区 | 国产香蕉尹人视频在线 | 日韩欧美中文字幕在线三区 | 全黄性性激高免费视频 | 成人三级无码视频在线观看 | 性色欲网站人妻丰满中文久久不卡 | 天天躁夜夜躁狠狠是什么心态 | 欧美一区二区三区视频在线观看 | 亚洲欧美国产精品久久 | 天天摸天天碰天天添 | 丰满人妻翻云覆雨呻吟视频 | 国产一区二区不卡老阿姨 | 无遮无挡爽爽免费视频 | 男人和女人高潮免费网站 | 亚洲色大成网站www | 高清国产亚洲精品自在久久 | √天堂资源地址中文在线 | 国产精品美女久久久网av | 亚洲日本一区二区三区在线 | 久久无码中文字幕免费影院蜜桃 | 国产亚洲日韩欧美另类第八页 | 国产美女极度色诱视频www | 暴力强奷在线播放无码 | 国产口爆吞精在线视频 | 欧美刺激性大交 | 性做久久久久久久免费看 | 日韩av无码一区二区三区不卡 | 国产精品久久久久久亚洲影视内衣 | 双乳奶水饱满少妇呻吟 | 狂野欧美激情性xxxx | 日韩少妇白浆无码系列 | 综合网日日天干夜夜久久 | 婷婷综合久久中文字幕蜜桃三电影 | 国产亚洲欧美在线专区 | 亚洲gv猛男gv无码男同 | 国产精品久久精品三级 | 亚洲另类伦春色综合小说 | 377p欧洲日本亚洲大胆 | 久久国产精品精品国产色婷婷 | 我要看www免费看插插视频 | 蜜臀av在线播放 久久综合激激的五月天 | 一本色道久久综合亚洲精品不卡 | 欧美成人家庭影院 | 国产精品久久久久久亚洲毛片 | 少妇无码一区二区二三区 | 国产精品人人爽人人做我的可爱 | 国产福利视频一区二区 | 领导边摸边吃奶边做爽在线观看 | 少女韩国电视剧在线观看完整 | www国产亚洲精品久久久日本 | 欧美大屁股xxxxhd黑色 | 国产乱子伦视频在线播放 | 久久人妻内射无码一区三区 | 精品人人妻人人澡人人爽人人 | 老司机亚洲精品影院无码 | 人妻有码中文字幕在线 | 亚洲小说图区综合在线 | 久久精品女人天堂av免费观看 | 亚洲熟妇自偷自拍另类 | 成人三级无码视频在线观看 | 夜夜影院未满十八勿进 | 日韩欧美中文字幕在线三区 | 亚洲日本一区二区三区在线 | 亚洲乱亚洲乱妇50p | 久久午夜无码鲁丝片午夜精品 | 秋霞特色aa大片 | 免费看男女做好爽好硬视频 | 久久午夜无码鲁丝片秋霞 | 欧美变态另类xxxx | 爆乳一区二区三区无码 | 高清国产亚洲精品自在久久 | 又粗又大又硬又长又爽 | 国产人妻精品午夜福利免费 | 久久久精品成人免费观看 | 久久亚洲a片com人成 | 天天做天天爱天天爽综合网 | 国精品人妻无码一区二区三区蜜柚 | 午夜熟女插插xx免费视频 | 伊人久久婷婷五月综合97色 | 红桃av一区二区三区在线无码av | 一本久道久久综合狠狠爱 | 无套内谢的新婚少妇国语播放 | 国产精品永久免费视频 | 亚洲色欲久久久综合网东京热 | 日韩成人一区二区三区在线观看 | 欧美丰满熟妇xxxx | 亚洲国产精品无码久久久久高潮 | 亚洲综合无码一区二区三区 | 欧美亚洲国产一区二区三区 | 中文无码精品a∨在线观看不卡 | 一本久久a久久精品vr综合 | 成人性做爰aaa片免费看 | 少妇性俱乐部纵欲狂欢电影 | 一个人免费观看的www视频 | 中文无码伦av中文字幕 | 久久久久久久久蜜桃 | 秋霞成人午夜鲁丝一区二区三区 | 久久精品人人做人人综合试看 | 久久伊人色av天堂九九小黄鸭 | 久久精品视频在线看15 | 国产精品久久久久久亚洲影视内衣 | 成人无码视频在线观看网站 | 日本乱人伦片中文三区 | 国产内射爽爽大片视频社区在线 | 亚洲精品午夜无码电影网 | 男女超爽视频免费播放 | 性色欲网站人妻丰满中文久久不卡 | 人妻人人添人妻人人爱 | 亚洲国产精品久久久天堂 | 亚洲人成网站在线播放942 | 亚洲成熟女人毛毛耸耸多 | 色综合久久久无码中文字幕 | 噜噜噜亚洲色成人网站 | 中文无码成人免费视频在线观看 | 麻豆精产国品 | 巨爆乳无码视频在线观看 | 亚洲精品国产品国语在线观看 | 曰韩少妇内射免费播放 | 伊人久久大香线焦av综合影院 | 亚洲欧美国产精品专区久久 | 久久亚洲中文字幕精品一区 | 欧美成人午夜精品久久久 | 真人与拘做受免费视频 | 国产偷国产偷精品高清尤物 | 99久久婷婷国产综合精品青草免费 | 亚洲国产精品毛片av不卡在线 | 精品一区二区不卡无码av | 亚洲精品成a人在线观看 | 日产精品高潮呻吟av久久 | 免费中文字幕日韩欧美 | 国产香蕉尹人视频在线 | 日本饥渴人妻欲求不满 | 亚洲熟女一区二区三区 | 午夜时刻免费入口 | 2020久久超碰国产精品最新 | www国产亚洲精品久久网站 | 国产真人无遮挡作爱免费视频 | 性欧美videos高清精品 | 精品无码一区二区三区的天堂 | 亚洲 日韩 欧美 成人 在线观看 | 日韩人妻无码一区二区三区久久99 | 日韩av无码一区二区三区 | 亚洲一区二区三区香蕉 | 国产精品视频免费播放 | 亚洲一区二区三区偷拍女厕 | 欧美野外疯狂做受xxxx高潮 | 中文字幕人成乱码熟女app | 蜜桃av抽搐高潮一区二区 | 成 人 网 站国产免费观看 | av香港经典三级级 在线 | 最新国产麻豆aⅴ精品无码 | 精品偷自拍另类在线观看 | 精品国产aⅴ无码一区二区 | 2019午夜福利不卡片在线 | 人妻无码αv中文字幕久久琪琪布 | 中国女人内谢69xxxxxa片 | 女人被男人躁得好爽免费视频 | 国产亚洲精品久久久久久国模美 | 波多野结衣 黑人 | 国产97色在线 | 免 | 亚洲国产高清在线观看视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产黄在线观看免费观看不卡 | 国产猛烈高潮尖叫视频免费 | 亚洲一区二区三区四区 | 国产亚洲精品久久久久久久 | 久激情内射婷内射蜜桃人妖 | 西西人体www44rt大胆高清 | 亚洲人成网站免费播放 | 国产日产欧产精品精品app | 国产精品无码一区二区三区不卡 | 老子影院午夜精品无码 | 亚洲自偷自偷在线制服 | 2020久久超碰国产精品最新 | 男女猛烈xx00免费视频试看 | 久久久久久av无码免费看大片 | 欧美亚洲日韩国产人成在线播放 | 少妇太爽了在线观看 | 亚洲中文字幕在线观看 | 天天摸天天透天天添 | 国产精品a成v人在线播放 | 中文字幕无码免费久久9一区9 | 中文字幕久久久久人妻 | 国产极品视觉盛宴 | 99久久无码一区人妻 | 性啪啪chinese东北女人 | 欧美国产日韩久久mv | 色婷婷综合激情综在线播放 | 欧美人与牲动交xxxx | 日韩av无码一区二区三区 | 人人爽人人澡人人高潮 | 亚洲精品午夜国产va久久成人 | 帮老师解开蕾丝奶罩吸乳网站 | 国产欧美熟妇另类久久久 | 久久精品成人欧美大片 | 精品国产成人一区二区三区 | 欧美黑人巨大xxxxx | 漂亮人妻洗澡被公强 日日躁 | 男女下面进入的视频免费午夜 | 性啪啪chinese东北女人 | 欧美性生交活xxxxxdddd | 国产精品久久久一区二区三区 | 国产精品爱久久久久久久 | 小泽玛莉亚一区二区视频在线 | 午夜精品久久久久久久久 | 成熟女人特级毛片www免费 | 久久99精品国产麻豆 | 午夜性刺激在线视频免费 | 精品久久综合1区2区3区激情 | 小泽玛莉亚一区二区视频在线 | 精品熟女少妇av免费观看 | 久久精品女人的天堂av | 色婷婷av一区二区三区之红樱桃 | 国产高清不卡无码视频 | 18无码粉嫩小泬无套在线观看 | 亚洲色大成网站www国产 | 亚洲成av人片在线观看无码不卡 | 欧美成人免费全部网站 | 亚洲精品一区二区三区婷婷月 | 爆乳一区二区三区无码 | 亚洲阿v天堂在线 | 国产成人精品久久亚洲高清不卡 | 亚洲国产精品无码一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 成人精品一区二区三区中文字幕 | 55夜色66夜色国产精品视频 | 亚洲一区二区三区国产精华液 | 中文字幕无码人妻少妇免费 | 国产乱人伦av在线无码 | 亚洲热妇无码av在线播放 | 国产超碰人人爽人人做人人添 | 无码成人精品区在线观看 | 亚洲乱码中文字幕在线 | 亚洲欧美国产精品专区久久 | 欧美国产亚洲日韩在线二区 | 人妻中文无码久热丝袜 | 免费视频欧美无人区码 | 亚洲热妇无码av在线播放 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美精品在线观看 | 天堂久久天堂av色综合 | 亚洲一区二区三区播放 | 久久99精品久久久久婷婷 | 人人澡人人透人人爽 | 久激情内射婷内射蜜桃人妖 | 又大又硬又黄的免费视频 | 沈阳熟女露脸对白视频 | 天天拍夜夜添久久精品大 | 久久久久久a亚洲欧洲av冫 | 亚洲中文字幕va福利 | 自拍偷自拍亚洲精品10p | 国产黄在线观看免费观看不卡 | 中文字幕无码人妻少妇免费 | 日本乱偷人妻中文字幕 | 未满小14洗澡无码视频网站 | 国产午夜精品一区二区三区嫩草 | 亚洲熟悉妇女xxx妇女av | 蜜桃无码一区二区三区 | 一本加勒比波多野结衣 | 2019nv天堂香蕉在线观看 | 国产精品无码一区二区三区不卡 | 精品国产一区av天美传媒 | 国产av无码专区亚洲awww | 国产午夜亚洲精品不卡下载 | 麻豆国产人妻欲求不满 | 青草视频在线播放 | 欧美性生交xxxxx久久久 | 国产香蕉97碰碰久久人人 | 97久久国产亚洲精品超碰热 | 又色又爽又黄的美女裸体网站 | 最新国产乱人伦偷精品免费网站 | 天下第一社区视频www日本 | 波多野结衣 黑人 | 中文无码伦av中文字幕 | 丰满岳乱妇在线观看中字无码 | 人妻少妇精品无码专区二区 | 久久99热只有频精品8 | a在线亚洲男人的天堂 | 国产真实乱对白精彩久久 | 欧美亚洲国产一区二区三区 | 成年美女黄网站色大免费全看 | 久久精品中文字幕一区 | 131美女爱做视频 | 最近中文2019字幕第二页 | 人妻无码αv中文字幕久久琪琪布 | 亚洲小说图区综合在线 | 又紧又大又爽精品一区二区 | 无码乱肉视频免费大全合集 | 特大黑人娇小亚洲女 | 欧美人与物videos另类 | 国产成人无码一二三区视频 | 久久国产精品偷任你爽任你 | 久久97精品久久久久久久不卡 | 亚洲成av人片天堂网无码】 | 免费无码av一区二区 | 中文字幕无码日韩专区 | 中文字幕+乱码+中文字幕一区 | 久久综合狠狠综合久久综合88 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 中文精品无码中文字幕无码专区 | 精品无码国产一区二区三区av | 99久久亚洲精品无码毛片 | 少妇无码一区二区二三区 | 中文字幕无码免费久久9一区9 | 丰满少妇熟乱xxxxx视频 | 大肉大捧一进一出视频出来呀 | 麻豆国产人妻欲求不满谁演的 | 国产两女互慰高潮视频在线观看 | 国产精品-区区久久久狼 | 国产激情一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 久久综合网欧美色妞网 | 99久久婷婷国产综合精品青草免费 | 无人区乱码一区二区三区 | 亚洲爆乳无码专区 | 国产片av国语在线观看 |