技术开发 频道

Visual Basic 9不完全入门之DLinq简介

【IT168技术文档】

    在当下的微软社区中,DLinq (Linq to SQL) 无疑已成为最炙手可热的话题之一。虽然我们知道,Linq 的精髓并不仅仅是 DLinq 一部分,但是由于其应用的广泛性,还是有必要在这里做一个关于 Visual Basic 9 中的 DLinq 的简要介绍。

    数据库支持

    当前的 Linq to SQL 仅仅支持 SQL Server 2005,SQL Server 2000 与 SQL Server Compact Edition。虽然它同样支持 SQL Server 2000,但是基于兼容性考虑,我们建议您尽可能地使用 SQL Server 2005 进行测试或开发。至于其他种类数据库的支持,暂时没有相关信息,但是预料在不久的将来,RTM,甚至是 SP1,可能会做出支持。

    数据库映射

   
Linq to SQL 提供了强有力的 ORM 功能。您可以选择自己继承 DataContext 获得更大的自定义化,也可以直接采用 DBML 的可视化设计模式。它支持实体间的映射,One to many 或者 One to one。Lazy-load 模式提供了良好的性能。同时,您可以利用 LINQ 提供的编译时检查,以确保生成可靠的 SQL。无需编写 SQL - 是的,您只需要像查询内存中数据一样即可。

    Linq to SQL 甚至支持存储过程——看看 ScottGu 提供的那幅图:


    注意:存在 BUG !

    毕竟是 Beta 1,存在或多或少的 Bug 都是正常的。请尽量减少实体间的映射,除非你不想再增加数据。事实确实是这样的,在你试图往带有实体映射的表中增加数据,您将得到一个 InvalidCastException。这个 Bug 已经被证实,如果 June CTP 中没有了,请及时通知我,万分感谢。

    分页数据

   
在站点项目中,分页应该是最重要的数据库应用之一。Scott 博客中有一些关于它的介绍,引用如下:


    实际上,这和掐头去尾的手段没有什么不同;只是在 SQL Server 2005 中,将用 Rownumber,而 SQL Server 2000 不支持此特性,因此将可能造成分页不准确的状况。Linq to SQL 生成的 SQL 语句性能还是相当高的,具体可以在查询分析器中看到。

    使用限制

    在 Visual Basic 9 Beta 1 中,LINQ 语句暂时还不支持 Join,GroupBy,Count,Sum 等等 T-SQL 应用;而在 June CTP 中,它们都被支持。因此,我建议还没有下载的各位尽可能地安装 June CTP。另有一点,就是 Linq to SQL 中的查询不能够调用本地函数,或者诸如 Array.Contains 一类。所以,虽然 ToArray 对于遍历操作有相当大的性能甜头,但是代价就是不能使用嵌套查询,因为它已经成为了一个本地数组。除此之外,理论上应该还有许许多多的细节限制,毕竟 Linq to SQL 不是从内存中查询数据的。

    温故而知新

    Visual Basic 9 不完全入门系列(1) : 语法糖
    Visual Basic 9 不完全入门系列(2) : 语法增强
    Visual Basic 9 不完全入门系列(3) : LINQ 简介
    Visual Basic 9 不完全入门系列(4) : LINQ 进阶

    结语

   
虽然 Linq 不是为 DLinq 而生,但是 DLinq 铺天盖地的介绍,还是让我们看到了 DLinq 在 Linq 家族中举足轻重的地位。这篇只做了最为基础的介绍,如果大家想了解更多,可以与我联系,或者自行学习。当然,下一篇介绍的还是 DLinq。

0
相关文章