谈 Linq to Sql 的优劣

       Linq To Sql 是 Microsoft 开发的针对解决 data <> object 问题的新技术。

1、Linq To Sql 的优点

       在 Linq To Sql 推出之前,我们只是把 sql 语句形成一个 string,然后通过 Ado.net 传给 Sql Server,返回结果集。其缺陷就是,若 Sql 语句写的有问题,只有到运行时才知道;而且并不所有的人都懂数据库。而 Linq To Sql 在一切围绕数据的项目内都可以使用。特别是在项目中缺少 Sql Server 方面的专家时,Linq To Sql 的强大功能可以帮我们快速完成项目。Linq To Sql 的推出,是让大家从烦琐的技术细节中解脱出来,更加关注项目的逻辑。Linq To Sql 的出现,大大降低了数据库应用程序开发的门楷,它实质是事先为程序员构架了数据访问层,势必将加快数据库应用程序的开发进度。Linq To Sql 解放了众多程序员,让他们的把更多的精力放到业务逻辑以及编码上,而非数据库。对于初学者来讲,Linq To Sql 可以让他们迅速进入数据库应用程序开发领域,节约了培训成本。

       Linq To Sql 是在 Ado.net 和 C# 2.0 的基础上实现的。它通过自动翻译 sql 语句把结果集创建成对象返回。由此可以看出,发送到 Sql Server 端的 sql 语句是 Linq To Sql 自动生成的。这对于不懂 sql 的人来说无疑是个福音。尤其重要的是,Linq To Sql语句是在编译期间就做检查的。而不是运行时检查。如是这般,当哪里出了问题时,可以及时更改,而不是到了运行时才发现问题。最后,Linq To Sql 是针对对象操作的,是“面向对像”的。

2、Linq To Sql 的缺点

       Linq To Sql 在动态构造语句时比拼接 sql 麻烦很多。它主要是为了解决 data <> objects 的问题而产生,所有操作均针对 object,因此推荐使用 object 查询较符合Linq To Sql 的设计原则。事实上,在 Linq To Sql 中依然可以使用拼接字符串的形式,而非它提供的 Query Expression。它提供了两个方法,一个是 db.ExecuteQuery<TEntity>(string sql),另一个是 db.ExecuteCommand(string sql),都是直接接收 sql 语句的。习惯拼接的人依然可以调用它们来操作。尤其第一个返回的就是一个对象的集合,多少还是有点“面向对像”思想的;而对于第二个来说,当你需要做批处理时,你想不用它都不行。当然,若觉得性能不是问题的话,也可 SubmitChange 方法来做更新。Linq To Sql 在批处理更新时,SubmitChange 只会一个个更新。而第二个方法恰好满足了批处理更新或删除的需要。

3、Linq To Sql的性能

       Linq 确实比自己实现的查找要慢。但当数据量特别大时,更多是时间是花在分配虚拟内存上了,则差别就不是那么明显了。Linq To Sql 是又如何提升性能的?第一,采用延迟加载(deferred loading)技术。语句声明之后并不立即执行,而是在真正需要的时候才执行。第二,采用缓存技术。已经取到内存的数据,再依次提取时,会先从缓存中返回,而不是再次访问数据库。当然,不需要对象的时候,没有必要使用 Linq To Sql。比如只是填充 DataView 或 DataGrid 时,返回dataset 或 datatable 要比用 Linq To Sql 实现的快得多。

 

你可能感兴趣的:(sql,sql,数据库,server,datagrid,Microsoft,LINQ)