2009-10-03 37 views
5

到目前为止,我一直在使用ADO.NET来支持LINQ to SQL(或实体)。我开始一个新的项目,应该是小型的,至少在一开始,但我想有足够的空间扩大下线。现在跳入LINQ to SQL是个坏主意吗?

我觉得现在是进入LINQ的好时机。我避免了一段时间;不过,我担心LINQ to SQL的当前方向。我听说将来LINQ to Entities将成为MS首选的数据访问。我宁愿不进入LINQ to Entities,因为:1)最有可能的是我现在不想投入混音的陡峭的学习曲线(已经在忙着学习MVC)和2)我听说它还没有准备好黄金时间。

我的担心是这样的 - 如果我现在用LINQ to SQL开始一个项目,我可以轻松将它升级到LINQ to Entities下线吗?

回答

11

LINQ to Entities已准备好用于黄金时段,而且学习起来并不一定陡。然而,LINQ to SQL也不错,你会学到很多东西,随着你前进,它将保持有用。

总之,选择适合的项目最好。如果SQL Server是并且仍然是数据库平台,并且如果不需要重新映射表或其他复杂的技巧,则LINQ to SQL将以非常快的速度将您带到那里。它也非常有效。

+4

如果您每次更改数据库时都无意中重新构建.dbml文件,LINQ to SQL也是一个不错的选择。 – 2009-10-03 14:16:49

+1

@James Jones如果您使用PLINQO – CitizenBane 2009-10-03 14:28:46

+1

....或http://www.huagati。com/dbmltools/- 它允许您使用开箱即用的L2S设计器,但增加了真正的“仅更改”同步,命名约定,Xml文档注释,L2S模型等生成的SQL-DDL diff脚本。 – KristoferA 2009-10-03 14:38:18

0

微软发布了一份声明,表示LINQ to SQL已经达到其使用寿命并将不再对其进行任何重大改进。看看他们的官方糖衣语句here。实体框架将取代它。

Here is the MSDN article关于如何将LINQ to SQL项目移植到实体框架。

+1

他们不会改善它,但他们也不会把它拿走。实际上,Windows窗体也是如此,并不意味着你不应该使用它。 – 2009-10-03 13:51:36

+3

Winforms在WPF上台之前有机会成长。另一方面,LINQ to SQL还是比较新的。 – 2009-10-03 13:57:01

+0

但这是否意味着你不应该再使用它了?现在行之有效的方法将在未来继续发挥作用,虽然MS不会添加新的功能,但它仍然会在修复方面提供支持(我相信一些修补程序将在.NET 4.0中提供)。 – JulianR 2009-10-03 14:01:57

4

如果您的应用程序在.net 4.0 SP1可用之前即将投入生产,请参阅L2S。 Linq-to-SQL是稳定的,它不会很快消失,并且它会生成很好的SQL。 EF v1不。期。如果您想了解有关EFv1儿童疾病的更多信息,请查看MSDN EF forum

EFv2是否能够胜任这项任务仍有待观察;我只使用测试版1,并且没有一些后来版本所说的改进。

的“L2S VS EF”的话题已经覆盖了无数次了,检查出:
Is LINQ to SQL Dead or Alive?

...和个人而言,我认为,安德斯·海尔斯伯格的声明雷德蒙德开发新闻使得它很清楚。 “LINQ to SQL没有死,我可以向你保证,它并没有死,没有任何事情会消失,我们从来没有这样做,我们永远不会,”他说。

http://reddevnews.com/blogs/desmond-file/2008/12/digital-darwinism.aspx

0

谁说LinqToSql有一个最小的学习曲线不会跟你在一起完全诚实的人。 ADO.NET具有重要的学习曲线。任何ORM都有一个重要的学习曲线。一旦你使用了一个ORM,拿起另一个ORM并不难。一旦你建立了你自己的ORM(为了好玩,不要真的这么做),你真的会发生什么事情。我不是说LinqToSql是一个很棒的技术,你不能在ADO.NET中使用Linq,你需要类似ORM的东西。

由于很多原因(Linq是其中一个更强大的,ORM成熟度是另一个),现在是将ADO.NET转换为ORM的好时机。

从我所看到的,将项目从一个ORM“升级”到另一个(无论哪个ORMs)总是很困难,除非您真的知道自己在做什么,并将ORM与您的ORM松耦合一切尽可能。

我会提防LinqToSql和EntityFramework(又名LinqToEntities)。他们都缺乏你在“现实世界”中可能需要的很多功能。既不成熟也不成熟(因为你在这个问题的答案中看到的分歧有助于展示)。

.NET空间中已经有了成熟的,经过验证的ORM,并且现在确定哪个是主导并不难。

+0

该答案中的实体框架批评与EF 1.0/3.5相关。作为一个ORM,EF 4大部分都很好。 – 2011-02-16 12:00:42

0

这可能是因为LINQ to SQL针对SQL服务器进行了优化,因此它可能比实体框架更适合您的问题。

但是,从长远来看,您必须考虑您的应用程序预计存活的时间以及“升级”的成本。

0

我已经避开了微软的ORM,我很高兴我有。有一个不断循环的宣传 - >接受 - >实现弱点&缺陷 - >生命结束,重新开始。

不要误解我的意思,我是.Net的粉丝,只是不是微软的ORM。那里有更好的解决方案。

我意识到这只是意见,但我提供它的价值。