2012年用linq2sql启动新的企业大型web应用是不是明智

Posted

技术标签:

【中文标题】2012年用linq2sql启动新的企业大型web应用是不是明智【英文标题】:Is it sensible to start a new enterprise large web application with linq2sql in 20122012年用linq2sql启动新的企业大型web应用是否明智 【发布时间】:2012-03-04 18:06:27 【问题描述】:

linq2sql 的现状如何,是否还可以继续使用?

我即将开始一个非常大的项目,并且有相当多的经验。

但是,如果这确实是要走的路,我不想避免使用 EF。我确实喜欢 linq2sql 的简单性。

【问题讨论】:

【参考方案1】:

在我看来:没有。

为什么?

v4 中的 EF 与 Linq-to-SQL 一样容易上手

EF 4 还可以选择执行更复杂和高级的操作 - 如果您需要。在 Linq-to-SQL 中运气不佳,真的 - 它很简单 - 没有高级功能

EF 4 有多种构建系统的方法 - Linq-to-SQL 只有“数据库优先”

EF 4 允许您更新您的模型(如果您使用的是数据库优先方法),如果您的底层数据库发生变化 - 它可能会发生任何变化吗? Linq-to-SQL 没有这样的运气 - 放下表格并将其拖回;如果您修改了表名或列名,或者添加了额外的例如协会...

Linq-to-SQL 实际上更像是一种概念证明,以展示由 C# 语言团队开发的 LINQ 的功能。它从来都不是一个成熟的 ORM。另一方面,EF 是由 ADO.NET 数据库团队开发的,旨在成为真正的企业级 ORM / 概念数据模型。 Linq-to-SQL 不会看到任何进一步的发展可言 - 可能会在这里或那里进行错误修复。另一方面,EF 是 Microsoft 的战略平台 - 他们将大力投资并继续在这里开发(例如,参见“EF 迁移”,从代码中自动更新您的数据库架构)。

我个人的看法:如果您开始新并且使用 .NET 4(或者可以使用它):使用 EF v4。你不会错的,你拥有 Linq-to-SQL 的所有优点——如果你将来需要它们,还有更多......

【讨论】:

你忘记了最重要的一点:Linq2Sql 是生命支持——它不会被进一步开发。我个人也不会使用 EF - 与一些开源系统相比,糟糕的 2 级 ORM,MS 仍然需要 2 个版本才能达到工业质量。 看,我在很久以前就给 TomToms 一个类似问题的答案 - 事实证明我完全错了。没有任何迹象表明 Linq2Sql 处于生命支持状态或开发已停止,它在 .Net 4.0 中获得了新功能,并且正在 .Net 4.5 中进行开发。在可预见的未来,这两个项目将并行运行,因为它们解决了不同的问题。 @TomTom,实际上他在最后一个要点中提到了这一点。至于第三点,Linq to SQL 也支持模型优先开发。 谢谢你,我想我可以试一试。有什么推荐的教程吗? @ChrisBarry:有MSDN intro、Julie Lerman's eight tutorials、一些videos on the ADO.NET team blog、ScottGu's Code-First Tutorial,当然还有更多,如果你只是用谷歌或必应搜索“EF 教程”【参考方案2】:

我个人会尝试使数据库层成为实现细节,位于视图模型、存储库层和其他此类设备之后。那么唯一的问题是:

有用吗?

答案可能是“是”,但是通过抽象您可以在没有太多风险/返工的情况下更改它。也许是“更完整”的 ORM(NH、EF、LLBLGen 等)——或者可能是更轻的微 ORM(dapper、simple.data、mass 等)。

如果 L2S 可以让您快速入门,那么没有理由不能使用它。它现在可能不是我的首选,但它是一个很好的工具,而且我发现它在很多方面都比 EF 更直观。

不过,关键是不要将自己描绘成一个改变成本太高的技术角落。

【讨论】:

谢谢 Marc,是的,它将被抽象到存储库和服务后面,所以这很好。我可以试试 EF,看看它到底有多么不同/多么沉重。【参考方案3】:

Linq-2-SQL 已经死了……不管你听到什么 http://blogs.msdn.com/b/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx

【讨论】:

以上是关于2012年用linq2sql启动新的企业大型web应用是不是明智的主要内容,如果未能解决你的问题,请参考以下文章

LINQ 还是别的啥?

LINQ2SQL + PLINQO:如何处理这样的简单情况?

已安装LINQ2SQL,但类库项目中的“添加新项”列表中缺少LINQ To SQL类

Linq2Sql:即使返回单个记录,也始终执行 LEFT JOIN

Linq2Sql - 存储复杂的Linq查询以便将来动态执行 - 原始文本 - 可能吗?

为什么绝大部分前端团队还是无法重视Angular