本文向大家介绍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是用是一个对象的属性,已经不可能拼接了。我当时给他的答案是这样的。
- private void Methods(string orderId)
- {
- var q = db.Customers.Select(c=>c);
- switch(orderId)
- {
- case "ID":
- qq = q.OrderBy(c=>c.ID);
- break;
- case "Name":
- qq = q.OrderBy(c=>c.Name);
- break;
- default:
- break;
- }
- var result = q.ToList();
- }
我那时也没有想出一个更好的方案来。而后告诉他,去查下Compiled Query.说不定,可以找到更方便的。后来我才在这个例子中,看到更方便的。
- var query =db.Customers.Where
("City == @0 and Orders.Count>= @1", "London", 10).- OrderBy("CompanyName").
- 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的查询吧.
网站标题:LinqToSql缺点的认识和解决
网页路径:http://www.shufengxianlan.com/qtweb/news46/309246.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联