LINQ to SQL 是不是已弃用?

Posted

技术标签:

【中文标题】LINQ to SQL 是不是已弃用?【英文标题】:Is LINQ to SQL deprecated?LINQ to SQL 是否已弃用? 【发布时间】:2011-03-03 17:32:44 【问题描述】:

早在 2008 年末,关于 LINQ to SQL 的未来就有很多争论。许多人认为,微软在 .NET 4.0 中对实体框架的投资表明 LINQ to SQL 没有未来。我想我会等一下再做出自己的决定,因为人们不同意。

快进 18 个月,我有供应商提供依赖 LINQ to SQL 的解决方案,我亲自尝试过并且非常喜欢使用它。我想它会留在这里。

但我正在阅读一本新书(Ben Watson 的 C# 4.0 How-To),在第 21 章(LINQ)中,他建议它“已或多或少被 Microsoft 弃用”并建议使用 LINQ to Entity Framework .

我的问题是 LINQ to SQL 是否已被正式弃用和/或权威实体(Microsoft、Scott Gu 等)是否正式建议使用 LINQ to Entities 而不是 LINQ to SQL。

【问题讨论】:

+1 我是相信它会被弃用的人之一,我很伤心。我也很喜欢。 如果它仍然完全支持但没有得到很大扩展,这是否意味着我应该切换到其他东西?用什么代替它比较好? 【参考方案1】:

LINQ to SQL tools in Visual Studio

LINQ to SQL 是第一个对象关系映射技术 微软发布的。它在基本场景中运行良好并继续 在 Visual Studio 中受支持,但 它不再处于活动状态 维护旧版应用程序时使用 LINQ to SQL 已经在使用它,或者在使用 SQL Server 的简单应用程序中 并且不需要多表映射。一般来说,新应用 当一个对象关系映射层时应该使用实体框架 是必需的。

【讨论】:

【参考方案2】:

对于所有“Linq-to-SQL 已死”的人:Scott Guthrie 本人在 TechEd Europe 上明确提到 Linq-to-SQL 在 . NET 4,Damien Guard 发布了blog post,介绍了 .NET 4 中 Linq-to-SQL 的更改和改进。

引用马克吐温的话:“我的死讯被大大夸大了”......

【讨论】:

Hejlsberg 在 Redmond Dev News 采访中说:“LINQ to SQL 没有死。我可以向你保证,它没有死。什么都不会消失。我们从来没有这样做了,我们永远不会。” reddevnews.com/blogs/desmond-file/2008/12/… 虽然它没有死亡或死亡,但它已被弃用。这是主要问题。微软有文章称,此举是为了推他们的旗舰ORM——EF。 L2S 是完全支持的,并且对于每个人都知道/学习至关重要......但是对它的关注确实发生了变化,类似于 silverlight / html5 和 mvc / webforms .. 以前的技术都没有“死”,只是没有向前发展以与其他事物相同的速度或方向。弃用这个词可能有点强烈,因为这暗示它最终不会被支持或强烈反对。 Hejlsberg 所说的是一种天生的错误陈述,事情发生了变化,它们确实会消失,否则 Windows 3.1 仍将受到支持。.net 1.1 将在 server 2008 上得到正式支持,微软仍将支持铁语言就像汤姆说的死了!= 已弃用它仍在使用和支持,但是它不再被积极开发我建议保持对 linq to sql 的支持,但开始进入实体框架以进行当前和未来的开发 它现在死了,伙计们 @Viking。哈哈!每当微软官员被问及某个 MS 产品是否被杀时,他们总是回答说“它根本没有死。我们将继续支持……”【参考方案3】:

最后我检查了一下,这个站点使用(或曾经使用)Linq To SQL。 Joel Spolsky 在他的 GoogleTechTalk 中提到了这一点:http://www.youtube.com/watch?v=NWHfY_lvKIQ。

当谈到软件时,“死亡”是一个比喻性的修饰语(软件不会在任何字面意义上、生物学意义上死亡),所以只要相关各方拒绝从字面上定义它是什么,这场争论就会持续下去意思是“临死”。或者,简称LTD。因此,截至目前,关于 LTD 的争论已经持续了两年。都是因为语言上的一些歧义。

那些说“L2S 已死”的人通常指的是 L2S 不会接收太多(如果有的话)新功能这一事实。 Linq 的更新(如Damien Guard's post 中提到的更新)可能仅限于性能、可用​​性和稳定性更新。当然,有些开发者实际上可能会争辩说这是一件好事(可能是对new dynamic type 有点生气的开发者)。

那些说“L2S 没有死”的人通常指的是 L2S 不会完全从 .Net 中删除(至少不会很快)。想想:ADO。它可能会在实践开发人员中失去一些吸引力(这可能是微软那些狡猾的人不言而喻的愿望),但这并不意味着如果你愿意就不能使用 L2S。这只是意味着微软并没有试图用它来吸引大众。

在开始一个项目时,我实际上认为在 EF 和 L2S 之间进行选择真是太好了。作为比尔瓦格纳 points out,两者都有时间和地点。

【讨论】:

【参考方案4】:

我迟到了这个讨论,但我想指出早在 2008 年,Link to SQL 项目经理 (Tim Mallalieu) 在他的blog post 中宣布了这一消息,

“从 .NET 4.0 开始,LINQ to Entities [而不是 LINQ to SQL] 将成为 LINQ to 关系方案的推荐数据访问解决方案。”

我没有发现其他最近的相反公告。

【讨论】:

【参考方案5】:

我想它们会合并是不可避免的。 EF 实际上是 LINQ over db 对象的企业级实现。 linq2sql 完全是一个概念证明(以及更多),它实际上增长了腿,但激发了我们现在在 EF 中看到的许多想法。归根结底,DAL 层(nhibernate、EF、l2s、亚音速等)应该在链条的下游很远,以消除实现 LINQ 服务的客户端 BO 代码中的任何差异 - 热插拔将是结束通过 DI 进行游戏。

【讨论】:

【参考方案6】:

请务必查看在 InfoQ.com 上发布的 this article - 这是一个非常有趣的帖子。其结论是:“[O]从长远来看,LINQ to SQL 和 LINQ to Entities 将合并。同时,LINQ to SQL 的开发工作不会完全结束。”

【讨论】:

【参考方案7】:

不,不是。团队仍在努力改进它。

【讨论】:

这仍然是真的吗?

以上是关于LINQ to SQL 是不是已弃用?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4:'substring(to:)' 已弃用 [重复]

DTD 是不是已弃用?

ITMS-90809:使用 react-native-html-to-pdf 时已弃用 API 使用警告

macOS 上的 OpenGL 是不是已弃用?

Javascript:参数数组是不是已弃用?

PayPal ExpressCheckout 是不是已弃用?