L2S(LINQ to SQL)或EF(Entity Framework)

4
我将重建一个现有的中等规模的Web应用程序,用于供应链管理Web解决方案。核心围绕一些项目\站点组合记录,组织\用户管理,显示特定组织数据(具有2级网格的仪表板)以及钻取,其中包含一些复杂的项目交易计算和强大的网格以显示多个级别的总计、子总计等内容...
过去,我使用ASP.Net 2.0和ADO.Net开发了它,后端是SQL-Server。我应该将这个Web解决方案迁移到基于完整的ASP.Net v3.5的MVC架构,并集成其他部分,如Membership API、Validation-framework等...这将是一个完全的重新设计。性能和可扩展性(即处理数百万条记录,执行快速计算,快速响应时间等)是两个主要优先事项。此外,还需要考虑简单性、长期维护以及任何级别的定期升级。
我想知道以下两者之一是否可以成为满足我上述要求的强大的数据访问层(DAL):
L2S(LINQ to SQL)或EF(Entity Framework)。

我一直在搜索,基于此想验证我的理解:

  1. L2S是否类似Win98——强大、稳定、简单而且性能优秀,
  2. EF是否类似WinXP——比win98更好,也有一定的稳定性但是有些许不同的性能和简单性层面上与L2S相比较。

我认为我们不会在开发中涉及“多个数据库”,SQL Server将继续使用。另外,我认为我们不需要实际将多个表映射到一个实体等... 一般来说,我们将把我们的DB表与实体(例如用户、组织等)进行一对一映射,在某些复杂情况下,例如仪表板从多个表中提取记录(最可能需要使用存储过程和/或DB视图)。钻取页面从单个表中提取数据,但有许多计算,因此我们计划使用存储过程,它将为我们提供格式化的表格(但这个表格可能看起来不像已经存在于DB中的表格)。

所以,这是一些棘手的映射,但除此之外,我们需要保持简单,考虑性能和可扩展性。哦!最后但并非最不重要的 - 我们有一个紧迫的截止日期,所以这是一种“快速开发”的方式。

简单、快速、可扩展且高效 - 这就是我们需要的!

提前感谢 - 请指导我。

附加链接: ORM-LINQ-Entity-Framework-Eric-Nelson 讨论 - LINQ to SQL vs. ADO.NET Entity Framework 简短 - ADO.NET Entity Framework When To Use It Vs Linq To SQL

细节 - 在ADO.NET实体框架和LINQ to SQL之间进行选择

列表 - 在LINQ to SQL和实体框架之间进行选择


我认为“强大的DAL”将L2S和EFv1都排除在考虑之外。对于操作系统的比较,我认为Windows ME最合适(两者都是)。EFv4可能有潜力成为Windows XP,但现在说还为时过早。记住,微软基本上只是进入ORM市场,他们还有很长的路要走。 - Michael Maddox
哦,还有一件事——我们非常兴奋地使用基于ASP.Net v3.5的MVC框架。它似乎符合我们的要求。对此有什么其他想法吗?我们肯定不会放弃.Net :-) - Hemant Tank
你可能需要在ASP.NET MVC中编写大量的管道类型代码,如果你有时间和专业知识去走这条路线,那就去吧。 - Michael Maddox
4个回答

4
我喜欢将L2Sql比作Win98,但我会将EF与Vista相比...它有很大的潜力,但直到下一个版本推出之前留下的一些问题就像千刀万剐一样。
我期待EF 4 ... 我希望它能像你的类比所说的Windows 7。

2
我认为使用Linq to SQL是没有错的选择。它有些小问题,但它能够正常工作。尽管使用多个数据上下文存在问题,但我们还是决定使用L2S。
如果想要快速生成DAL,请查看plinqo。它需要使用Codesmith来生成代码,但它可以做很多事情,并解决了Linq to SQL存在的一些问题。此外,还有Oleg Sych T4 template,它是免费的并内置于VS2008中。

1

如果你等不及entity v2发布,也就是.net 4.0版本,我建议你使用linq 2 sql。

如果以后需要的话,你可以随时切换到entity。

我曾经尝试过entity v1,但我认为它还需要成长。

选择linq 2 sql的另一个原因是你只需要与sql server打交道,这将加快项目进程。


那么,在MVC中考虑L2S并采用“仓储模式”(可以完全抽象DAL)是否明智?并且等待.Net v4.0和Entity Framework v2的到来。根据微软的说法,它会比v1更好,因此我可以直接从L2S升级到v2,而不是从EF v1切换到v2。 - Hemant Tank

1
在我个人看来,使用过你提到的所有东西后,我会选择NHibernate而不是Linq2sql或Entity。如果你只是想要一个简单的CRUD网站,那么这个决定并不太重要,但是在ADO.Net中实现业务层和数据层的分离相当困难,而在我的观点中,使用Nhibernate则更加简单。

正如我所说,这个领域的意见差异非常大。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接