LINQ to SQL是死还是生?


95

就在我使用LINQ to SQL结识朋友时,似乎好像MS正在从它的下面拉开地毯。

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的未来,这难道不是通常会发出不好的信号吗?鉴于MS向墙上扔钻头的速度快,尽早使用任何新钻头是否合理?(这很友好,对于LINQ to SQL来说还不算早!)。

对于我的LINQ to SQL工作,我想我要去SubSonic了!

更新:一些新观点:

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


该公告中没有任何关于LINQ或LINQ to SQL消失的消息……?
Codewerks

5
@AugustLights我认为声明说的是“我们不会删除LINQ to SQL,但是我们将完全忽略EF上的LINQ”
Jon Limjap

乔恩-那就是我的阅读方式。声明说:“ ...实体框架将是我们推荐的用于LINQ到关系场景的数据访问解决方案。” 这就意味着再见了,从LINQ到SQL。
rp。

4
MFC还没有死,它不是首选的解决方案。您还在编写MFC代码吗?VB6仍然受支持,您可以编写代码吗?一直以来都是这样,MS做它想要的,而不是您想要的。
gbjbaanb

1
@rp:您在DOA下是什么意思- Dead or AliveDead on arrival
abatishchev

Answers:


64

1)他们无法“杀死” Linq-to-SQL,因为它已经是.net框架的一部分。他们所能做的就是停止向其中添加功能。这并不能阻止已经使用L2S的成千上万的开发人员对其进行扩展和改进。一些核心领域很难触及,但它们已经扎实,缺少的设计器功能可以轻易地固定

2)PDC EF会议之一表明,他们从EFv1惨败中汲取了一些教训,现在他们将L2S的许多优点复制粘贴到EF中,并假装它是EF的新东西。换句话说,L2S版本2刚刚被“重新标记”为EF。

3)像这样的LINQ(语言集成查询)是自切片冰淇淋以来最好的东西,它可以与L2S之外的其他很多东西一起使用(Linq到对象,Linq到实体,Linq到XML,Linq到任何东西) )。因此,DP小组试图迫使[大量] L2S采纳者采用[较不流行和当前存在缺陷的] Entity Framework,这不是没有学习Linq的理由。

另请参阅此线程(我认为部分触发了Tim的博客文章):http : //forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4061922&SiteID=1

更新1:罗杰·詹宁斯(Roger Jennings)于2008年12月发行的Visual Studio Magazine封面故事是该主题的不错阅读,同时进行了L2S与EF的比较:http ://visualstudiomagazine.com/features/article.aspx?editorialsid= 2583

更新2:Redmond开发人员新闻中引用了Anders Hejlsberg的话:“ LINQ to SQL并没有死。我可以向您保证,它还没有死。任何事情都不会消失。我们从未这样做,我们永远不会。

http://reddevnews.com/blogs/weblog.aspx?blog=3016


14
StackOverflow的创建者将Linq应用于SQL作为他们选择的ORM。显然,他们认为收益大于危险。
罗伯特·哈维,2009年

这仍然是真的吗?我听说StackOverflow离开了L2S,但似乎找不到此信息。
亚伦2012年

2
@Aaron,是的,他们使用带有自己的称为Dapper的微型ORM的手写SQL。他们可能仍然在网站上不太受欢迎的部分上使用LINQ-to-SQL。
CMircea 2012年

28

您的问题含糊不清,需要解决。

LINQ!= LINQ to SQL

有大量的LINQ技术和提供程序:

  • Linq to SQL;
  • 实体的Linq;
  • LINQ对象
  • Linq到XML;

...而这些只是来自Microsoft的。也有非MS提供程序,包括NHibernate。

您链接的博客仅讨论Linq to SQL。

LINQ的主要优势在于,您可以学习和使用一种查询语法,并在多种技术中重复使用它。

鉴于此,我建议您认为“ Linq To SQL”的未来缺乏任何意义都是不相关的,因为您编写LINQ查询所获得的技能将来会转移到其他工具中。


LINQ 2 SQL语法与Entity Framework足够相似,您可以很轻松地在两者之间切换。
詹森·肖特

但是,他的问题仍然有效,因为LINQ to SQL的实际实现具有针对SQL Server的某些特定优势。
Tor Haugen

21

我们不会杀死LINQ to SQL。我们正在针对EF进行优化,但是LINQ to SQL绝对不会被淘汰:)

-斯科特/微软。


大声笑。这使我感到震惊。您必须获得Microsoft的批准才能发表此公开声明吗?:p
Kolob Canyon

嗯?在2009年,这是一个信息,有关团队已经搞砸了,所以我不得不解决它。作为.net:D的产品经理
Scott Barnes

13

您不仅应该学习Linq(System.Linq.Enumerable和System.Linq.Queryable),而且还需要学习.net语言的编程语言增强功能。

在C#3.0中,这些包括:

  • 扩展方法(在第一个参数上带有this关键字的静态方法)
  • 编译器推断的类型(var)
  • Lambda语法(根据上下文生成匿名方法或表达式)
  • 初始化器
  • 属性默认实现(简写)

在这里阅读更多。


在VB 9.0中,有一些内联XML魔术,还有许多其他功能(许多与上面C#列表相似)。

在这里阅读更多。


哇,我一定过得很真实。只有对问题的句子进行非常严格的上下文外解释,我的回答才有意义。
艾米B

@David B,是的。我当时想,这是一个好的答案,我只是看不到它如何回答这个问题。大声笑
mmcdole 2009年

1
它一直在投票。我想有些人只需要查看链接中的信息即可。...如果您喜欢此答案,则可能希望在此获得更好的答案:stackoverflow.com/questions/471502/what-is-linq/471592#471592
Amy B

8

老实说,我不明白您在那篇文章中读到的link2sql已死。

您链接到的博客文章中说:

我们正在聆听有关LINQ to SQL的客户的信息,并将根据我们从社区收到的反馈继续开发产品。

对我来说,像LINQ to SQL这样的读物将在将来得到开发和支持。我不知道你为什么认为它已经死了?


7

当然,我认为在LINQ to SQL,LINQ to Entities和LINQ to [insert 3rd Party ORM]之间进行选择,可以为软件开发人员提供一个非常健康的数据访问层方法生态系统。像NHibernate,LLBLGen甚至Subsonic这样的第三方提供商(不确定是否会提供LINQ提供商)肯定会使竞争变得更好,更有趣。

话虽这么说,对于Microsoft放弃LINQ to SQL来说,这将是完全可悲的,尤其是因为它确实拥有良好的追随者-即使在StackOverflow的基础上也是如此。


6

关于它的有趣的博客文章。 以及有关Stackoverflow帖子的一些相关信息。

基本要点似乎是在ado.net博客上发表的评论,该评论指出Entity Framework是唯一使Visual Studio 2010和Dot Net 4花费大量开发时间的东西。

我的回应是-DUH。我们都知道这一点。微软在PDC 2007上公开表示,LINQ to SQL是SQL Server的短期版本,因为SQL Server没有其他LINQ故事。它仅适用于SQL Server。您无法将LINQ编写为SQL提供程序-没有模型。这是一项一次性技术,无法扩展。

实体框架是Microsoft建立LINQ提供程序的唯一方式。事实证明,实体框架存在很多争议,但是我认为部分原因是因为LINQ to SQL在当今具有更好的程序员经验。实体框架将赶上并超越LINQ to SQL,因为它是Microsoft未来的ORM /映射工具。

编辑-我只是在我的博客上做了一些更详细的撰写

EDIT2-IQueryable提供程序-与LINQ to SQL提供程序不同。您可以为自己喜欢的任何内容编写自己的IQueryable Provider。您不会获得设计师的支持或模型生成。我不了解将LINQ绑定到SQL模型生成的gui设计器模型。


1
回复:“您不能将LINQ编写到SQL提供程序-它没有模型。” 嗯,。只是他们决定在最后时刻让必要的成员私有化,以使EF脱颖而出。参见blogs.msdn.com/mattwar/archive/2007/05/31/…–
KristoferA

1
对不起,以前的链接应该是blogs.msdn.com/mattwar/archive/2008/05/04/...
KristoferA

谢谢-尚未阅读该帖子。我确实知道内部有一个API,但不知道该API是否曾被公开发布。
詹森·肖特

1
同一博客(blogs.msdn.com/mattwar)上也有完整的文章系列(包括示例),介绍如何编写提供程序以及可能有用的可插拔的可下载L2S提供程序。
KristoferA

可以入侵它并不重要-MS并未正式支持它。您没有VSIP集成。您无法为自己的应用获得徽标...
Jason Short,

5

我想我真的没有在这里看到问题。在您链接的文章中:

我们正在聆听有关LINQ to SQL的客户的信息,并将根据我们从社区收到的反馈继续开发产品。

我想念什么吗?是什么使LINQ对SQL的印象在到达时就死了?



4

有人记得VB6吗?不管您是讨厌它还是喜欢它,Microsoft都出售了数百万册,并且企业花费了数百万美元来编写数百万行VB6。接下来发生了什么?

  • 好吧,微软仍然支持VB6(有点-不是IDE)。
  • 微软仍然说他们甚至还在听VB6客户(9月9日)。
  • 但是VB6客户满意吗?自2002年以来年,即VB6推出4年后。
  • 为什么不?将代码投资升级到替代技术VB.Net的升级路径非常昂贵

因此,请考虑一下该课程。对我来说,似乎对LinqToSQL的支持会有些痛苦。他们必须支持它,因为它在当前的.NET框架中。但是它将在.NET 5、6、7 ...中吗?只需考虑对您有多重要(就我所知,这对您完全没有关系)。


对我而言,最好的方法是使用带有OracleConnection和SqlConnection的纯ado.net,因为此提供程序和System.Data.DataSet永不消亡。是表格数据的基础。个人我喜欢EF,但专业的DataSet仍然是标准。
pedrofernandes 2012年

3

也许您不应该花时间学习SQL的Linq,但是仍然会有实体Linq保留。


1
当前的EF方法存在一些严重问题,尤其是强制执行的基类。我希望EFvNext在某些地方看起来会完全不同。在此之前,我建议您使用最简单的选项:L2S-或nHibernate ;-p
Marc Gravell

1
一旦掌握了LINQ,我就会建议“学习” LINQ to SQL非常简单。这只是在项目中添加LINQ to SQL classes项目并将其拖放到设计器中的一种情况。
理查德·埃夫


3

很明显,在Microsoft的工具箱中有2个ORM是一对多的,但是对我来说,似乎是由于所有错误的原因选择了错误的框架。对于ado.net团队来说,C#团队可以在更短的时间内完成ADO.NET团队应该做的工作,并且可以更好地完成工作,这一事实很难让人接受。并不是我知道这两个框架的内部工作原理,但是我认为将linq2sql的缺点升级到实体框架会更快。

似乎涉及了太多的政治事务,我认为这确实会损害asp.net的声誉,因为我不相信Entity Framework将给我们与Linq2sql一样的用户友好体验。ado.net团队还可以从asp.net mvc团队那里学习一些沟通技巧,因为对问题的说明充其量只是模糊的。

了解Scott Gu和他的MVC团队在这里的立场会很有趣,因为他们的大多数示例都使用Linq2Sql。


2

使用Linq 2 Sql和Entity Framework总是存在很大的重叠区域,这总是有点奇怪。我认为L2S只能进入.NET 3.5版本的唯一原因是,人们非常怀疑EF是否会成为现实。既然EF1已经发布了,尽管它是一个非常粗糙的v1,所以不再需要L2S。


2

(不,StingyJack,LINQ to SQL不使用实体框架)

无论如何,我不会担心。Tim表示,他们正在听有关LINQ to SQL的客户。从我对L2S看到的热情来看,客户(就是我们)会说出他们的想法。

而且,正如KristoferA指出的那样,他们实际上不能“杀死” L2S,只能冻结它。而且,L2S一经打磨,并不需要太多进一步的开发。有了L2S提供商,LINQ的任何进步也应该在L2S中可用。因此,选择仍然是我们的选择。


好吧,他们可以通过不将它包含在Dot Net 4中而杀死它,Dot Net 4应该是并排安装。这意味着dot net 4应用程序必须在同一台计算机上安装3.5SP1才能访问它-不知道这是否成立。
詹森·肖特

有人记得VB6吗?Microsoft仍然支持VB6(有点)。他们仍然说,即使在现在,他们也在听VB6客户的声音。但是我们快乐吗?不可以。将代码获取到替代技术VB.Net的升级路径非常昂贵。因此,请考虑一下这一课:并考虑一下LinqToSQL是否将出现在.NET 4、5、6 ...中,以及对您来说有多重要。
MarkJ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.