Linq To Sql缺点的认识和解决
创始人
2024-06-07 02:21:01
0

本文向大家介绍Linq To Sql缺点,可能好多人还不了解Linq To Sql缺点,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

Linq To Sql是Microsoft开发的针对解决data!=object问题的新技术。在笔者的一系列的文章中,对它已经做了大量的介绍。现在,笔者将从经验的角度,谈谈Linq To Sql缺点.

Linq To Sql缺点

很久前,有个网友问到这么一个问题。 他在界面上,有个DataView,里面绑定了一些Column,然后,他勾选那一列,就按某列排序。其传回的参数是列的名字。然后问我,该怎么用Dlinq 来实现。

在以前拼接Sql语句的年代,这个很简单,一个" order by " + string,想按什么排就按什么来排。而现在,dlinq是用是一个对象的属性,已经不可能拼接了。我当时给他的答案是这样的。

  1. private void Methods(string orderId)  
  2. {  
  3. var q = db.Customers.Select(c=>c);  
  4. switch(orderId)  
  5. {  
  6. case "ID":  
  7. qq = q.OrderBy(c=>c.ID);  
  8. break;  
  9. case "Name":  
  10. qq = q.OrderBy(c=>c.Name);  
  11. break;  
  12. default:  
  13. break;  
  14. }  
  15. var result = q.ToList();  

我那时也没有想出一个更好的方案来。而后告诉他,去查下Compiled Query.说不定,可以找到更方便的。后来我才在这个例子中,看到更方便的。

  1. var query =db.Customers.Where
    ("City == @0 and Orders.Count>= @1", "London", 10).  
  2. OrderBy("CompanyName").  
  3. Select("New(CompanyName as Name, Phone)");  

在这里OrderBy直接接收的就是列的名字。再仔细一看,好像Where里是Linq的语句哎,那OrderBy也该是linq语句。后来,我把CompanyName换成小写的,一跑过了。莫非真的是列的名字?出个难题吧。找了一个列名,是带空格的,重新来建这个工程.一跑,错了!把列名用中国扩号扩起来了,也是错了。咳,只是动态构造Expression Tree而已,永远都不能直接接收列的名字。这个例子看着是很简单,可不知道你有没有注意到它有一个80多k的Dynamic.cs文件。更有意思的事情是,它的名称空间是System.Linq.Dynamic.看样子,ms本来是打算把它加在.net 3.5中吗.不晓得为什么放到了例子中了。这个名称空间下,其主要内容就是动态构造Expression Tree. 和Linq To Sql进阶系列(六)用object的动态查询篇 一文中的方法类似。只是,它还包含了解析字符串部分.

从上面那个例子中,可以看出,Linq To Sql在这种动态构造语句时,比拼接sql麻烦很多。在Linq To Sql进阶系列(六)用object的动态查询篇 一文中,笔者极力推荐使用object的查询。这符合Linq To Sql的设计原则。因为,它主要是为了解决data!=objects 的问题而产生的.它所有的操作均针对object,那就让我们使用object的查询吧.

【编辑推荐】

  1. LINQ to SQL查询分析
  2. LINQ查询架构简单介绍
  3. LINQ to SQL映射关系概述
  4. LINQ To SQL对象模型浅析
  5. LINQ to SQL映射列描述

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...