不明白,为什么有不少.NET的公司技术选型会选择使用Linq,还规定不能写sql。
原因是说使用Linq随时切换数据库。
我就想知道大家对这个是什么看法???
我个人是觉得,使用Linq,就是把你的脖子往别人刀口那摆,谁知道哪天这个技术就不更新维护了呢,而bug又没有人去处理,君不见微软已经抛弃了多少样技术?
另外,这是自己把自己给废了。本来用sql,你还可以专一门数据库语言,哪天不想写程序了,做DBA也行。
再另外,切换技术也是向规范看齐啊。哪天你的公司要求全部转java,或者php,不转就自己另谋高就,php数据库用linq吗?java8以下用linq吗(8以上的lambda语法一样吗?)
简单的东西,都知道原理的,干嘛还需要别人封装,对吧?直接不是更干脆更效率?
linq,把简单的东西,弄复杂了,而且,不利于切换技术,只能围绕着.net
各位,您怎么看?
楼上几位试图通过linq的优点去讲这件事我想没有切中题主的想法。
1、楼主是典型的新人综合症期,对技术有畏难情绪,觉得学习一门技术周期非常长。你说这个简单那是因为你会,所谓难者不会会者不难嘛。其实一门新技术出来往往和其他知识都是互通的,Linq的话你让技术大牛来学可能两晚上就搞定,成本比你想象的要低的多。之所以产生这样的问题就是因为本身技术积累不够,你学会了Linq那转去学其他ORM就会简单的太多。
2、当然盲目的去增加技术积累是不明智的,比如你以后要搞网络开发现在去重学汇编,那技术积累的效率就太低了,应该择优而选。所以你看大家就一门技术撕的火热其实就是个人对技术价值的看法不同。楼上几位以及实际应用已经证明Linq是有很大价值的这就证明linq的方向是对的,是值得去积累的。
哈哈哈哈哈哈哈.
只问你维护过写sql语句的项目吗?
改了下回答
1.linq是把复杂的问题简单化
2.使程序员只能做标准sql操作.屏蔽数据库差异.使代码更标准.因为复杂的数据库特性一般都会使项目更复杂.而程序员因为懒的动脑筋设计合理的结构.就会去用这些数据库特性.
3.linq的开发效率不是sql能比的.我一个人写接口给 pc主站/pc后台管理/app/事件处理平台 4个项目用.你试试写sql字符串能达到这样的开发效率?
4.可维护性.sql语句的可维护性就不喷啦.简直是一场灾难.刚入行的时候我也写sql.后来自己要改自己代码的时候.真的感觉是自己拉一坨屎.自己吃.而linq因为是强类型.所以维护起来非常方便
5.结构清晰.使程序员以对象的角度来开发.sql程序员实际上就是面向过程开发.而复杂业务时.面向过程的思维模式对项目来说.就是一场灾难.
现在基本都是四端合一的,一个接口,所有客户端都通用啊。
sql可以直接调试,把最终的sql扔到数据库执行。
linq我看到的是一堆模板语句,不方便
论性能,linq比不过sql
离开.net,java和php都是用sql为主的,你会不适应
@小浩哥在此:
1.接口项目只有2个.给4个项目用.但是我是一个人在做.开发效率区别非常大.你没看过可能无法体会.
2.和调试不调试没关系.sql开发起来就是比linq慢.维护起来就是比linq麻烦无数倍.这一点我都懒得解释为什么..
3.性能从来都不在linq和sql的区别上.只在sql的效率上.
4.不打算离开.net java和php的开发效率我无法忍受...感觉将生命浪费在没有意义的事情上.
PS:如果有公司要招我去做php我会劝他转.net.不转就算了.也遇到过让我转java的公司.我都回绝了.
站在公司角度而言,用linq(orm框架)肯定更容易维护,换数据库不用说,有几个项目做大了后会换数据库的?
站在个人角度说,用linq(orm框架)可以把你从繁琐的tsql语句编写及各种赋值逻辑中解脱出来,很大程度提升了开发效率及代码可靠性,而且这种并不是和sql抵触的,你写的好linq肯定sql也不会差到哪去,写的不好的linq很容易在性能上出现问题,这种反而迫使你需要更了解数据库。
java 8 jdk中没有linq,但有lambda,这个看看就好,就那么几个方法,用起来相当费力,这个也是历史包袱太重。当然有各种第三方的加成的话的确会好很多,但由于泛型这块跛的太厉害,如果写c#再写java会发现有各种奇葩地方,为了实现相同功能的lambda语句,java的写出来会比较奇怪。
又不是打造艺术品 —— 你说造汽车造坦克这些,用人工好还是用机械设备好。
多废点电成本很低,多用两个人成本就很高,而且生产效率高。
如果硬生生非得说拼效率之类的,c是不是该调出来了,接着汇编调出来,然后操作系统是不是该扔了...
用的这个次数不多,但Linq、OData一系列东西,应对这种统计业务类的程序,着实是件很爽的事情。
话说那年ibaitis我真是恶心死了,为了偷懒我都得再构建一个工具,解放体力重复劳动,何况乎现在正值解放脑力重复劳动的时代呢,就一个所谓稳定的“模版”现在还被广泛使用,也难怪j2ee搞得那么值钱,互联网的世界让人醉啊。再话说前两年,用了ef,一个人从零开始一个多星期就搞定过检用的一个业务系统,在以前那得累死人。
技术其实也并没有被抛弃,只是时代变了被用得少了,工具变了而已,知其所以然,不变应万变。
比如你以为winForm被淘汰了吗 —— 其实没有,相反它在某个领域很火——比如军工。
大数据吼得那么凶,sql不也没被淘汰嘛,只是多了个nosql的天地而已。
没有什么不变的,我们都是世界的一个过客而已,租房和买房也都一回事,只是租期不一样...
如果的变化跟不上主流了,我想我该去找我爷爷了,扯远了,扯到人生了...
夜深人静...闲聊~~
对性能不是特别要求,这样子减少了sql的维护成本。
说的换数据库是扯淡,他现在用的是mssql可以说三年后只要他还在,他就不会换mysql.
就同以前说的三层架构解藕说的原因一样,说如果底层换数据库,上面接口不用换,这个只是说的一个原因。
以下是我给团队成员推lambda(也就是linq)的介绍,个人认为足以体现出优势
//把list里满足某个条件的成员输出到新的list
//输出用户名等于张三的
List<User2> lstUsers = lstUsersAll.stream().filter(t -> "张三".equals(t.getName())).collect(Collectors.toList());
//以上代码,如果用普通的for循环实现,需要4行代码,lambda精简了75%代码行数
List<User2> lstUsers1 = new ArrayList<>();
for (User2 users : lstUsersAll) {
if ("张三".equals(users.getName())) {
lstUsers1.add(users);
}
}
PS:以上代码是java的
起码也得把400行减少到100行才能说减少了75%
写golang的路过