本文发表在 rolia.net 枫下论坛使用者必须注意,linq2sql不外乎就是framework帮你在application里面写了sql statement的wrap.因此,慢也就是application执行sql statement的速度.
先说linq2sql的坏处:
(1)linq2sql很方便,托托拽拽,表达使自己生成,因此引诱初用者喜欢用linq2sql做傻事情,比如一个大循环,里面一行一行update改数,这实际上相当能用batch的时候用cursor,这是大忌讳。
(2)很复杂的luma表达式,做一个数据库复杂操作,一旦business logic有更改,需要重新改表达式,重新编译
(3)数据库表结构或SP参数列表或者返回之列表变化,需要重新update linq2sql xml,并且重新编译
(4)linq2sql是发明出来做data entity级别操作的,硬用它作batch操作,自讨苦吃,比如说删除2000行数据。
再说linq2sql的好处:
(1)linq2sql完全可以call stored proedure并且handle 返回值/返回错误/返回dataset,所以复杂logic或者大batch放在SP里面,就像以前一样
(2)linq2sql的wrap比较健壮,不需要像以前那样开factory开connection闭connection,使用方便
(3)性能如果是call SP就是最好的表现,如果自己做lumda表达式,性能惨不过以前在app端写statement,所以这不是问题(可以自己做百万行的statement update测试)
(4)对小表或者多参数的update,直接上linq2sql table object,非常方便。想象一下以前需要自己维护object大参数列表,要update一个80column的表有多麻烦,现在简单了。
知道了pros & cons会更好的帮助使用者做出选择更多精彩文章及讨论,请光临枫下论坛 rolia.net
先说linq2sql的坏处:
(1)linq2sql很方便,托托拽拽,表达使自己生成,因此引诱初用者喜欢用linq2sql做傻事情,比如一个大循环,里面一行一行update改数,这实际上相当能用batch的时候用cursor,这是大忌讳。
(2)很复杂的luma表达式,做一个数据库复杂操作,一旦business logic有更改,需要重新改表达式,重新编译
(3)数据库表结构或SP参数列表或者返回之列表变化,需要重新update linq2sql xml,并且重新编译
(4)linq2sql是发明出来做data entity级别操作的,硬用它作batch操作,自讨苦吃,比如说删除2000行数据。
再说linq2sql的好处:
(1)linq2sql完全可以call stored proedure并且handle 返回值/返回错误/返回dataset,所以复杂logic或者大batch放在SP里面,就像以前一样
(2)linq2sql的wrap比较健壮,不需要像以前那样开factory开connection闭connection,使用方便
(3)性能如果是call SP就是最好的表现,如果自己做lumda表达式,性能惨不过以前在app端写statement,所以这不是问题(可以自己做百万行的statement update测试)
(4)对小表或者多参数的update,直接上linq2sql table object,非常方便。想象一下以前需要自己维护object大参数列表,要update一个80column的表有多麻烦,现在简单了。
知道了pros & cons会更好的帮助使用者做出选择更多精彩文章及讨论,请光临枫下论坛 rolia.net