2008-10-30 48 views
7

我们准备在工作中启动一个全新的项目,而不是遗留代码。我们在过去使用过亚音速,我们对它很满意。但那是在Linq之前。你今天会选择什么样的数据层,Linq或Subsonic?

有没有人不得不面对同样的问题(Linq x Subsonic)?

你的决定是什么?原因是什么?

任何洞察赞赏。

+0

你的意思是LINQ或LINQ to SQL?因为SubSonic从3.0开始支持LINQ。 – 2009-07-16 14:44:39

+0

当我问这个问题时,去年十月,Subsonic在版本2.1(没有Linq)。 我想更新的问题应该是LinqToEntities x Subsonic 3.0.0.3(截至目前)。 – nandos 2009-07-16 16:38:40

+0

实体框架提供比Subsonic更好的性能:http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic – Tim 2009-07-16 14:41:17

回答

11

亚音速

优点:

  • 尼斯和简单
  • 脚手架

缺点:

  • 方法签名经常接受字符串PARMS(虽然我们鼓励你使用DAO字符串常量),它可以被滥用。

请记住:

  • 需要无代码的网站项目,放手模型生成(需要BuildProvider)。

的LINQ to SQL

优点:

  • 在IDE句法糖
  • MS支持
  • 查看SQL在IDE要执行
  • 允许不同模型中的摆弄水平,从自动生成到显式定义再到目标t属性。

缺点:

  • 复杂。你需要学习像DataContext这样的新概念才能有效。

请记住:

也评估ADO.NET Entity Frameworkhere

3

我喜欢LINQ的一件事,我不认为SubSonic会优雅地处理,它会自动处理连接。

FROM a in db.Orders 
where a.Total > 100 
SELECT new {a.Item.Desc, a.Customer.Name}; 

会自动生成SQL像thisL

select i.DESC, c.NAME 
from ORDERS o 
inner join ITEMS on o.ItemID = i.ItemID 
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID 
where o.TOTAL > 100 
0

linq to sql最大的风险是微软会厌倦它并放弃它。有很多人猜测这已经发生,只有实体框架才会更新。亚音速不会受此影响,更糟的情况是您有源代码进行编辑。

0

我处于相同的情况。 LinQ更“视觉化”,你可以在vstudio中做所有事情,甚至Rob也承认亚音速有一些东西可以与之匹配。

IEnumerable,LINQDatasource(带有自动分页)和可视化建模让我相信选择Linonic而不是Subsonic。

1

NHibernate怎么样?新项目是否真的不合格?尽管如此,来自Java的人会发现它很熟悉,你也可以将它用于.NET 2.0和Mono。

0

您可能想要查看MS stops developing LINQ to SQ L发生的情况,因为它似乎正在发生。 SubSonics最新版本更易于创建查询并更易读,然后是以前的版本。

1

我的经验一直以SubSonic为主。这是非常直接的部署,你会在半小时内完成你的DAL。请记住,这是瑞士军刀,因为它是为实用设计的。基本上你会得到每个表生成的类,以及对集合进行延迟加载的能力。你也可以通过框架执行存储过程,所以如果你有复杂的数据结构,你可以从数据库中获取它们并更新你手工制作的类。

我现在已经在5个主要项目中使用了它,并且我对它变得依赖的速度印象深刻。

1

我和Linq一起去了,因为它是内置在框架中的。对于那些声称不会被微软支持的公司来说......这是LinqToSql将被逐步淘汰。我相信其中一个计划是将其吸收到实体框架中。

我现在正在使用实体框架。它也使用linq,基本上它就像linqToSql一样,如果你选择使用它,就会有更多的灵活性和强大的功能。

我倾向于避免第三方框架和orms,因为它们最终也会消失。我相信他们有更多的机会死亡,因为他们的生活来自有多少人对它感兴趣并使用它。他们的生活也严重依赖于它的主要作者/贡献者。