学习LinqToSql还是坚持使用ADO.NET?

学习LinqToSql还是坚持使用ADO.NET?,linq,linq-to-sql,entity-framework,ado.net,linq-to-objects,Linq,Linq To Sql,Entity Framework,Ado.net,Linq To Objects,我正在讨论在即将到来的ASP.NET项目中使用什么技术 假设: 我将使用VisualStudio2008SP1(.NETFramework 3.5) 后端将是SQL Server 2005数据库(或可能是2008) 代码将用C语言编写# 我已经有了LinqToObject和LinqToXml的经验 我还拥有ADO.NET和一些已经构建的库的经验 该项目相对较小 该网站将有大约五个屏幕 数据库可能有六到七个表 可能会有25-50个活跃用户 每天的交易量可能在5-10笔左右 将存储最少的个人数据

我正在讨论在即将到来的ASP.NET项目中使用什么技术

假设:

  • 我将使用VisualStudio2008SP1(.NETFramework 3.5)
  • 后端将是SQL Server 2005数据库(或可能是2008)
  • 代码将用C语言编写#
  • 我已经有了LinqToObject和LinqToXml的经验
  • 我还拥有ADO.NET和一些已经构建的库的经验
  • 该项目相对较小
  • 该网站将有大约五个屏幕
  • 数据库可能有六到七个表
  • 可能会有25-50个活跃用户
  • 每天的交易量可能在5-10笔左右
  • 将存储最少的个人数据
  • 失败或网站被黑客攻击的后果将是最小的
选项:

  • 编写存储过程并使用ADO.NET调用它们。填充完
    数据集后,我仍然可以使用LinqToObjects

  • 利用我对Linq的了解来学习LinqToSql

  • 分析:

    我已经知道如何做选项1,但我真的希望只使用Linq。选项2的问题在于,根据我所阅读的所有内容,LinqToSql可能会被弃用,而代之以实体框架

    问题:

  • 如果您已经熟悉其他Linq技术,那么LinqToSql的学习曲线有多陡峭

  • 考虑到微软可能不会进一步开发LinqToSql,是否值得花时间学习它

  • 理解LinqToSql有一天会帮助我理解实体框架吗?还是它们太不同了

  • 最后,对于我的情况,你会推荐哪种选择

  • 更新:

    我不想在评论中忽略这一点:marc_指出LinqToSql正在进一步开发,至少从.NET4.0开始。链接:

    我不知道这是否意味着LinqToSql终究有一个未来,但它确实让学习这项技术变得更有吸引力

    有一件事我在我的原始帖子中没有问,但我应该问:实体框架中的缺陷是否可能影响这个项目

    谢谢你迄今为止的回答

    进一步分析

    以下是基于以下一些评论的LinqToSql缺陷列表:

  • 在对基础数据库进行更改时,必须不断更新设计器中的表和项。无法“刷新”或“同步”它,以便它自动识别更改
  • 由于设计器没有以一致的顺序生成底层文件,因此版本控制变得复杂
  • LinqToSql设计器生成的代码与SqlMetal不同
  • 存在与快速加载相关的问题/错误
  • 其中,项目1是我最关心的问题。即使是一个小项目,改变也是不可避免的。我记得有一次尝试使用Windows窗体设计器映射到数据库时,它在我面前爆炸了很多次,我放弃了它,转而使用我自己的ADO.NET帮助程序类


    然而,SqlMetal似乎能够完美地满足我的需求。我运行一个命令,它从数据库中从头开始重新生成所有内容,我完成了。如果我保持我的数据库简单(只有表——没有存储过程、视图或函数),也许SqlMetal就是我所需要的。

    如果您已经知道LINQ到Xml或对象(LINQ“对象”只是“列表”),那么LINQ到Sql是非常简单的

    微软并不反对Linq到Sql,他们只是建议使用EF。它不会升级

    Linq到Sql几乎与EF相似。有了EF,你可以做更复杂的事情,但在基本层面上几乎是一样的(对于你有7个表的网站来说,这没有任何区别)


    对于你的情况,我建议你和林克一起去。它比SP+ADO.NET更有趣、更快速。在现在使用ORM几乎是一个不错的选择。不使用它应该是例外(对我来说)。

    < P>我同意Davide Vosti,但是你可能想考虑其他选项,比如(也有LINQ支持)。 EF的当前版本并不令人印象深刻——它创建了一些非常讨厌的T-SQL,需要很长时间才能执行

    我们目前正在使用EF,但这是我最后一次为.NET3.5选择EF。在.NET4中,我给它多一次机会,但除非它有显著的改进,否则我将选择其他选项(LINQtoSQL不太可能是其中之一)

    1-如果您已经熟悉Linq到Sql的学习曲线有多陡峭 使用其他Linq技术

    我想说你已经解决了50%的学习问题,但我只是猜测,可能或多或少。LinqToSql不仅仅是Linq,还有很多其他功能

    2-考虑到Linq对Sql的学习可能会有困难,是否值得投入任何时间 微软不会进一步开发吗

    学习任何ORM都有好处。如果我要学习ORM,LinqToSql可能会在我的列表中是3或4。微软关于LinqToSql未来的交流充其量只是一片阴霾,他们显然正在为EntityFramework的发展付出更多的努力。微软可以随时改变主意,你必须得出自己的结论

    3-理解Linq到Sql有助于我有一天理解实体框架吗 还是他们太不一样了

    所有的ORM都有相似的特性,学习任何一种ORM都有助于理解其他ORM。LinqToSql确实与EntityFramework有许多相同的特性和缺点,因此它们的相似性比您预期的要多。也就是说,我建议在LinqToSql之前学习EntityFramework

    4-最终,你会为我的情况推荐哪种选择

    t中.NET3.5的最佳ORM