技术开发 频道

ado.net entity framework查数据0.1秒

  【IT168技术】关于ado.net entity framework 性能比较网上也有很多,这里我只是初步的介绍下ado.net entity framework使用不同的方法查询数据的不同性能

  第一部分:重复查询单个实体

  第一种:Linq To Entitiess

  代码如下:

static void Main(string[] args)

  {

  DateTime time1;

  DateTime time2;

  time1
= DateTime.Now;

  NorthwindEntities context
= new NorthwindEntities();

  
for (int i = 0; i < 1000; i++)

  {

  var data
= (from c in context.Customers where c.CustomerID == "ALFKI" select c).FirstOrDefault();

  
string addr = data.Address;

  }

  time2
= DateTime.Now;

  Console.WriteLine((time2
-time1).ToString());

  }

  查询使用时间为6.2秒左右

  第二种:使用Entity SQL

static void Main(string[] args)

  {

  DateTime time1;

  DateTime time2;

  time1
= DateTime.Now;

  NorthwindEntities context
= new NorthwindEntities();

  
for (int i = 0; i < 1000; i++)

  {

  var data
= context.Customers.Where("it.CustomerID=@Id", new System.Data.Objects.ObjectParameter("Id", "ALFKI")).FirstOrDefault();

  
string addr = data.Address;

  }

  time2
= DateTime.Now;

  Console.WriteLine((time2
-time1).ToString());

  }

  查询使用时间为6.2秒左右

  第三种:使用EntityKey 来查询

static void Main(string[] args)

  {

  DateTime time1;

  DateTime time2;

  time1
= DateTime.Now;

  NorthwindEntities context
= new NorthwindEntities();

  
for (int i = 0; i < 1000; i++)

  {

  var data
= context.GetObjectByKey(new System.Data.EntityKey("NorthwindEntities.Customers", "CustomerID", "ALFKI")) as Customers;

  
string addr = data.Address;

  }

  time2
= DateTime.Now;

  Console.WriteLine((time2
-time1).ToString());

  }

  查询使用时间为1秒,没错是一秒

  总结:

  前两种方法查询所使用的时间都差不多为6.2秒,时间比较长,但是使用第三种方法查询数据仅仅使用了1秒,为什么会相差那么多,区别在于前两种方法每次查询都要从数据库中查找,1000次查询每次的查询时间都一样,但是第三种方法只有第一次是从数据库中查数据,后面的999次都是在context通过主键直接取数据,速度当然会快很多啦,EF4.0之前的实体当含有外键引用时是自动生成对象引用的,而EF4.0现在多了一个外键ID,这样我们可以很方便的通过外键来查询数据

0
相关文章