知识大全 ADO.NET Framework beta 3和Linq

Posted

篇首语:知识就是力量,时间就是生命。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ADO.NET Framework beta 3和Linq相关的知识,希望对你有一定的参考价值。

ADO.NET Framework beta 3和Linq   以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Linq to SQL内置缓存功能 简单的说 当你查询了一次某个键的数据后 再次查询时Linq to SQL的引擎不再向数据库发送SQL 例如

  

  

  //下面是使用LinQ to SQL 的例子 context 是派生自System Data Linq DataContext的实例ErpLinQContextDataContext context = new ErpLinQContextDataContext();//SQLServer事件探查器拦截到SQL语句的执行//exec sp_executesql N SELECT TOP [t ] [emp_id] [t ] [fname]

  [t ] [minit] [t ] [lname] //                         [t ] [job_id] [t ] [job_lvl]

  [t ] [pub_id] [t ] [hire_date]//FROM [dbo] [employee] AS [t ]//WHERE [t ] [emp_id] = @p N @p varchar( ) @p = PMA M employee p = context employees First (p => p emp_id == PMA M );//当我再次执行相同的查询时 LinQ to SQL 不再向SQL Server发送查询了 employee p = context employees First (p => p emp_id == PMA M );

  而且 这两个实例是同一个实例

  

  

  //返回的对象是同一个实例bool b = object ReferenceEquals(p p ); //=true;p lname = New Last Name ;bool b = (p lname == New Last Name );  //=true;

  当然 如果你使用不同的Context实例查询时 缓存功能将实效

  好 让我们再看看ADO NET Entity Framework beta

  

  

  //pubsEntites是 ADO NET Entity Framework 的System Data Objects ObjectContext派生对象pubsEntities context = new pubsEntities();

  //下面语句执行时 SQLServer事件探查器拦截到SQL的执行//SELECT TOP [Extent ] [emp_id] AS [emp_id] [Extent ] [fname] AS [fname]

  [Extent ] [lname] AS [lname] //             [Extent ] [hire_date] AS [hire_date] [Extent ] [job_id] AS

  [job_id] [Extent ] [pub_id] AS [pub_id]//FROM [dbo] [employee] AS [Extent ]//WHERE N PMA M = [Extent ] [emp_id]Employee p = context EmployeeSet First (p => p EmployeeId == PMA M );

  //SQLServer事件探查器 发现SQL再次被执行Employee p = context EmployeeSet First (p => p EmployeeId == PMA M );//测试发现 虽然ADO NET Entity Framework执行了两次SQL 但是他们却返回了完全相同的实例bool b = object ReferenceEquals(p p ); // = true;

  测试的结果是 ADO NET Entity Framework(以下简称AEF)没有使用缓存 而是再次执行SQL 但是你要注意 两次查询的实例竟然是同一个

  从Context功能上看 他肯定持有上次查询的结果 他没有使用缓存 我只能认为可能AEF被设计成三层应用 那么他很担心其他的进程将数据改了 所以不使用缓存 当发现数据并没有改后 还是使用原先的实例 这个想法对吗?

  我们再看看另外一个代码

  

  

  //如果使用不同的上下文更新的数据 pubsEntities context = new pubsEntities();Employee p = context EmployeeSet First (p => p EmployeeId == PMA M );p LastName = Context changed data ;context SaveChanges();

  //旧的context再次查询时 Employee p = context EmployeeSet First (p => p EmployeeId == PMA M );b = object ReferenceEquals(p p ); //= true   why??b = (p LastName == Context changed data ); //= false 

  p LastName = New Last Name

  难以置信 AEF重新执行了SQL 但是置新的更改而不闻 仍然返回旧的数据 这个算是Bug吗?

cha138/Article/program/net/201311/13995

相关参考

知识大全 ADO.NET Entity Framework—并发

ADO.NETEntityFramework—并发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ADO.NET Entity Framework 试水——并发

ADO.NETEntityFramework试水——并发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ADO.NET Entity Framework 试水——并发[4]

ADO.NETEntityFramework试水——并发[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 试水——并发[1]

ADO.NETEntityFramework试水——并发[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 试水——并发[2]

ADO.NETEntityFramework试水——并发[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework 入门示例向导

ADO.NETEntityFramework入门示例向导  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ADO.NET Entity Framework存取数据库中图片

ADO.NETEntityFramework存取数据库中图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 详解ADO.NET Entity Framework 4中枚举的使用

详解ADO.NETEntityFramework4中枚举的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ADO.NET Entity Framework存取数据库中的图片

ADO.NETEntityFramework存取数据库中的图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 掌握ADO.NET的十个热门技巧[3]

掌握ADO.NET的十个热门技巧[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽可能用预