BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

LINQ to SQL何去何从

| 作者 Jonathan Allen 关注 594 他的粉丝 ,译者 张逸 关注 12 他的粉丝 发布于 2008年12月25日. 估计阅读时间: 5 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

尽管微软的ORM存在许许多多的问题,而且市面上例如LLBLGen,nHibernate与OpenAccess之类的替代品已经够多了,许多开发者被强迫使用微软的技术是因为他们的公司或客户的需要。而在取舍之间,看起来大多数开发者深信实体框架(Entity Framework)并非可行的方案。那么他们该如何应对?

Steel Price选择忘记Linq to Sql的衰亡,继续使用它是因为它能工作。至于实体框架,他写道,它并不能访问内在的列。

我永远都不会使用这样的一种联合关系,譬如:“给我提供John修改过的所有地址”。这会使得事情变得糟糕,我无法获得Address的CreatedById,除非我加载整个Login对象,并像这样引用它:Address.CreatedByLogin.LoginId。当你在编写和创建查询时,这种做法就太糟糕了。

有办法解决这个问题吗?当然有,但方法都过于复杂与繁琐,使用L2E(译注:即Linq to Entity)使得我80%的工作都变复杂了。而只有20%的功能是我真正需要额外的进行复杂的映射,但我可以使用其它工具,例如LLBLGen Pro或OpenAccess,因为它们更易于使用。

C# MVP David Hayend则说出了大多数开发者的心声,那就是让LINQ to SQL开源。他更进一步地建议LINQ to SQL应该采取ASP.NET MVC相同的方式,源自于社区的设计。

我强烈建议微软为LINQ To SQL重新组建最初的开发团队,并将他们融入到.NET 4.0版本中,并以开源的方式放在CodePlex上。这别无选择,鉴于LINQ To SQL已经明显偏向于实体框架,只有ADO.NET团队能够为他找到正确的方向。

我建议新的团队采取和ASP.NET MVC团队相似的方式,使我们能够获得一个可测试的轻量级O/R映射器,并关注于持续获得的社区反馈而频繁发布CTP版本。

Ian Cooper, another MVP, sees neither LINQ to SQL nor Entity Framework being completely suitable,

另一位MVP Ian Cooper则认为LINQ to SQL和实体框架都不完全适用。

简单地靠打压竞争者很难挽救我们对EF(译注:即实体框架Entity Framework)信心的缺乏。我们需要对批评进行更加深入地理解,但是那些说法并不能指出LINQ To SQL比EF好在哪些地方。L2S具有很多EF非常需要的特性,例如领域优先支持、POCO、SQL生成的性能、延迟加载等。如果缺乏对这些优势的公共认识,怀疑则必然延续,这无关ADO.NET是否认识到LINQ To SQL为何具有这般正面的支持。

直接抛弃LINQ to SQL并不可取,他建议微软承认已经犯下的过错,并基于二者的优势重新开始。

更好的结果应该是看到微软宣布开发LINQ To SQL和实体框架共同的继承者。从产品中获得反馈,然后再构建一个新的,可以称之为“LINQ to Relations”或者“LINQ to RDBMS”。如果确有所需,保证重用能够使你节约费用,但却需要重新计划。我无法想象的是,无论如何,比起L2S和EF开发人员需要在你的ORM下一次迭代中需要面对的问题而言,API的变化要显得更加的重要。

[…]

大多数人赞同Faulkner的建议并且正试图抛弃你曾经的最爱。有时候,你投入的特性越多,而越有可能在最后需要重新计划。

那么,就应该及早发布,并且应频繁发布。

最后,Scott Allen的问题则重点放在数据库上。

我认为,LINQ to SQL的内部能够从一个好的基础发展为一个通用的数据映射框架,以弥补ORM类型的框架(如Entity Framework)的不足。框架可以去掉一些有关对象到对象映射的繁重工作,或者通过一个提供者类型的架构提供在不同格式之间如XHTML、JSON、CSV的额外的映射能力。数据的转换、消息传递、以及数据推动是大多数大型应用程序中不可或缺的部分,框架可以使得这些工作能够以一个通用的方式易于实现与测试,从而带来高效的生产力。

查看英文原文:LINQ to SQL, The Next Step

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

by 徐 泳

翻译的够烂!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT