很多时候事物要从外部去看才能看清本质。在掌握了许多非微软的技术后,你才能够看清微软技术的优点和缺点
我使用linq to sql 6个月,最后放弃。
linq to sql 的问题在哪里呢?
立场错了,它放弃了数据库无关性,也许有人会说我就是只用Sql Server,不跨数据库有什么关系呢?
关系太大了。因为不跨数据库这个基本前提, 极大的影响了linq to sql的spec的成形。在这个前提下,原来通不过的spec就有可能被通过(这是对微软的PM经理来说的)。碰到困难,最终都有机会推给存储过程,或者sql 拼接。于是,ORM的一些基本技术指标也就无法达到了。结果就是linq语法是不完备的,很多事情做不到,或者做起来非常麻烦。
在使用linq to sql的时候,你就会抵抗不住使用sp或者sql拼接的诱惑
也就是说, 微软项目经理用一个错误的思想,做了一个错误的项目, 最后被他自己也有可能是其他项目经理所终结。
其实微软的工程师也是人,也要养家糊口,也会应付上司。不用太迷信。
结论:
ORM必须是跨平台的, 这是一个基本立场。有了这个基本立场,你才能做出一个真正有意义的ORM,因为只要一跨平台, 设计和spec就会发生根本性变化。
这个可以参考Jquery的基本思想。
EF按照它的spec它是跨数据库,然而, 它让我想到了什么呢? 呵呵, 令无数人发指的java Entity Bean,难道历史总是喜欢轮回。
期待高手比较一下Entity Framework和java Entity Bean的优缺点。