Is LINQ to SQL Dead or Alive?
就在我和LinqToSQL交朋友的时候,微软似乎正在从它下面拉起地毯。
http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-Roadmap.aspx
从我的一点研究来看,ef对于简单的工作来说太过分了。但是在发布这个声明之后,继续使用linq to sql还有什么意义吗?
超越了linq-to-sql的未来,这难道不只是发送一个坏信号吗?考虑到微软向墙上扔钻头的速度,早期使用新钻头是否合理?(这很好,Linq到SQL还为时过早!).
对于我的linq-to-sql工作,我想我要去亚音速了!
更新:一些新观点:
http://ayende.com/blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx
http://codebetter.com/blogs/david.hayden/archive/2008/10/31/linq-to-sql-is-dead-read-between-the-lines.aspx
1)他们不能"杀死"Linq to SQL,因为它已经是.NET框架的一部分。他们能做的就是停止向它添加特性。这并不能阻止成千上万的已经在使用L2S的开发人员扩展和改进它。有些核心区域很难触摸,但它们已经很牢固,缺少的设计功能很容易固定。
2)其中一个pdc ef会议表明,他们已经从efv1惨败中吸取了一些教训,现在他们正在复制和粘贴大量从l2s到ef的好东西,假装它是新的ef东西。换句话说,L2S版本2刚刚被"重新命名"了。
3)像这样的linq(语言集成查询)是自切片冰淇淋以来最好的东西,它可以与L2S(linq to objects,linq to entities,linq to xml,linq to anything)之外的许多其他东西一起使用。因此,DP集团试图迫使(大量)L2S采用者转向(不太受欢迎且目前存在缺陷的)实体框架,没有理由不学习Linq。
另请看这条线索(我认为这部分触发了蒂姆的博客帖子):http://forums.microsoft.com/msdn/showpost.aspx?postid=4061922&siteid=1
更新1:Roger Jennings于2008年12月出版的《Visual Studio》杂志封面故事是一本关于这一主题的好书,其中有一些L2s与EF比较:http://visual studio magazine.com/features/article.aspx?社论ID=2583
更新2:anders hejlsberg在RedmondDeveloperNews上被引用为"linq to sql还没有死"。我可以向你保证,它没有死。什么都不会消失。我们从来没有这样做过,也永远不会这样做。"
http://reddevnews.com/blogs/weblog.aspx?博客= 3016
你的问题有一个模棱两可的地方需要解决。
林克!= LINQtoSQL
有一大堆LINQ技术和供应商:
- LINQ to SQL;
- 实体的LINQ;
- 对象的Linq;
- LINQ到XML;
…这些只是来自微软的。也有非MS供应商,包括NHibernate。
您链接的博客文章只讨论LINQ到SQL。
Linq的主要优势在于,您可以学习和使用一种查询语法,并在多种技术之间重用它。
考虑到这一点,我建议,任何对"Linq to SQL"的未来的感知缺失都是不相关的,因为您在编写Linq查询时获得的技能将来都可以转移到其他工具上。
我们不会杀了Linq to SQL。我们正在优化ef,但linq to sql肯定不会被淘汰:)
-斯科特/微软。
不仅要学习linq(system.linq.enumerable和system.linq.queryable),还需要学习.NET语言的编程语言增强功能。
在C 3.0中,这些包括:
- 扩展方法(对第一个参数使用此关键字的静态方法)
- 编译器推断类型(var)
- lambda语法(根据上下文生成匿名方法或表达式)
- 初始化器
- 属性默认实现(简称)
在这里阅读更多。
在Vb9.0中,有一些内嵌的XML魔力,还有许多其他东西(许多类似于上面的C_列表)。
在这里阅读更多。
我真的不明白你在那篇文章中读到的link2sql在哪里死了。
在你链接到的博客文章中说:
我们正在听取客户关于Linq to SQL的意见,并将继续根据我们从社区收到的反馈改进产品。
对于我来说,像linq to sql这样的读取将在将来得到开发和支持。我想知道你为什么认为它死了?
当然,我认为在Linq to SQL、Linq to Entities和Linq to[插入第三方ORM]之间的选择提供了一个完全健康的数据访问层方法生态系统,软件开发人员可以从中选择。第三方供应商,如NHibernate、LLBLgen甚至亚音速供应商(不确定他们是否会提供LINQ供应商)肯定会使竞争变得更好和更有趣。
尽管如此,对于微软来说,放弃linq-to-sql将是非常可悲的,特别是因为它有一个很好的追随者——甚至stackoverflow都是建立在它之上的。
有趣的博客文章。以及有关stackoverflow posts的一些相关信息。
基本要点似乎是ADO.NET博客上的评论,指出实体框架是唯一让Visual Studio 2010和DOT NET 4获得主要开发人员时间的东西。
我的回答是-duh。我们都知道这一点。微软在2007年的pdc上公开表示,linq to sql是SQL Server的一个短期版本,因为没有其他linq story提供给SQL Server。它只适用于SQL Server。不能将LINQ写入SQL提供程序-没有它的模型。这是一种一次性技术,不可扩展。
实体框架是Microsoft构建LINQ提供程序的唯一方法。事实证明,实体框架是有争议的,但我认为这部分是由于LinqToSQL在今天有更好的程序员经验。实体框架将捕获并超越Linq to SQL,因为它是微软未来的ORM/映射工具。
编辑-我刚刚在我的博客上写了一篇更详细的文章
edit2-iqueryable提供程序-与linq to sql提供程序不同。您可以为自己喜欢的任何东西编写自己的iqueryable提供者。你得不到设计师的支持或模型的生成。我所知道的用于生成LINQ to SQL模型的GUI设计器模型中没有。
我想我不太明白这里的问题。从你链接的文章中:
We are listening to customers
regarding LINQ to SQL and will
continue to evolve the product based
on feedback we receive from the
community as well.
我错过什么了吗?什么让SQL对LINQ的印象是到达即损?
Scott Guthrie告诉我他们不会杀Linq to SQL:
在linqdev.com上发布
有人记得vb6吗?无论你个人是讨厌它还是喜欢它,微软都卖出了数百万份拷贝,企业花费数百万美元来编写数百万行的VB6。接下来发生了什么?
- 嗯,微软仍然支持vb6(有点-不是IDE)。
- 微软仍然表示,他们甚至现在(9月9日)也在收听vb6的客户。
- 但是,VB6的客户满意吗?从2002年开始,在VB6推出4年后。
- 为什么不?代码投资到替换技术vb.net的升级路径很昂贵。
所以考虑一下这个教训。在我看来,linqtosql支持将相当勉强。他们必须支持它,因为它在当前的.NET框架中。但是它会在.NET 5,6,7中吗…?想想这对你有多重要(据我所知,这对你根本不重要)。
另请参阅http://ayende.com/blog/archive/2008/10/31/microsoft-kills-linq-to-sql.aspx和此处的注释。
也许您不应该费心学习linq-to-sql,但是仍然有实体linq将被保留。
很明显,2个窗体在微软的工具箱中是一对多的,但对我来说,它似乎是错误的框架,因为所有错误的原因而被选择。对于ADO.NET团队来说,C团队完成了ADO.NET团队应该在更短的时间内完成的任务,并且以更好的方式完成了任务,这一事实很难让人接受。我不知道这两个框架的内部工作原理,但我认为将linq2sql的缺点升级到实体框架要快得多。
似乎涉及了太多的政治因素,我认为这真的会损害ASP.NET的声誉,因为我对该实体框架不信任,这将给我们提供与Linq2SQL相同的用户友好体验。ADO.NET团队还可以从ASP.NET MVC团队学习一些沟通技巧,因为对问题的澄清至多是含糊不清的。
学习ScottGu和他的MVC团队所站在这里是很有趣的,因为他们的大多数示例都使用linq2sql。
对于Linq2SQL和实体框架,总是有很大的重叠,这有点奇怪。我认为L2S之所以能进入.NET3.5版本,唯一的原因是人们对英孚是否能看到光明抱有很大的怀疑。现在EF1不在了,一切都是一个非常粗糙的v1,不再需要L2了。
(不,StingyJack、Linq to SQL不使用实体框架)
不管怎样,我不担心。Tim说他们正在听取客户关于Linq to SQL的意见。从我对L2的热情来看,客户(即我们)会说出他们的想法。
而且,正如克里斯托弗拉指出的,他们实际上不能"杀死"L2,只能冻结它。L2S一旦抛光,就不需要进一步开发。有了L2S提供商,在L2S中也应该可以获得LINQ的任何预付款。所以我们还是会选择的。
Windows Phone 7的下一个版本代号为Mango,包含一个可通过linq to sql访问的SQL Server Compact版本http://jesseliberty.com/2011/05/10/coming-in-mangosql-server-ce/