【问题标题】:ADO.Net or Entity Framework in Visual Studio 2008Visual Studio 2008 中的 ADO.Net 或实体框架
【发布时间】:2011-03-11 03:07:45
【问题描述】:

如果您现在在 .NET 2008 中编写小型数据库应用程序,会使用普通的 ADO.Net 或 ADO.Net Entity Framework 或两者中的一些?

我正在使用 Visual Studio 2008 来学习 .Net。我已经在 MS Access VBA 中进行了相当多的编程,但我决定是时候超越桌面并超越 90 年代了。我的问题部分是关于我应该学习什么,但也非常关于我应该在现实世界中实际使用什么。

【问题讨论】:

    标签: .net entity-framework ado.net


    【解决方案1】:

    从技术上讲,实体框架是 ADO.Net 的演变。帮自己一个忙,转储数据集以支持更强大的 ORM。在这一点上,没有人应该再传递数据集了。

    值得注意的是,实体框架并不是您使用 ORM 的唯一选择。有NHibernateSubSonicLINQ to SQL 等...所有这些在 2008 年都可以正常工作。我认为 EF 1 还没有完全成熟。

    【讨论】:

    • 从我问这个问题的五年后,我们发现 Entity Framework 查询过于有限,而 ADO.NET DataReader 无法获得更好的性能。我现在不同意“在这一点上没有人应该再传递 DataSets”的想法。无论如何,我们仍然会使用 EF Code First 和迁移,但我们的 GET 查询主要是原始 SQL,并且越来越多地使用 DataReaders 来获得额外的速度。
    【解决方案2】:

    我不会用VS 2008自带的Entity Framework版本,用VS2010的Entity Framework就可以了。

    我可能也不会使用 ADO.NET,因为那时我似乎总是最终编写自己的自定义 ORM。

    对于 .NET 3.5 / VS 2008,我会推荐 NHibernate。如果您想快速开始并在完成后丢弃项目,Linq To Sql 可能是一种选择(因为任何生命周期较长的项目都可能不得不重写以使用 EF 或 NHibernate)。

    所以,首先尝试 NHibernate,如果学习曲线太吓人,请退回到 LinqToSql 或 EF。一旦你学会了一个 ORM,学习第二个 ORM 就容易多了。

    此外,您可以在此处阅读更多有关为 .NET 选择 ORM 的信息:

    NHibernate, Entity Framework, active records or linq2sql

    【讨论】:

    • +1 用于 LINQ TO SQL。在不知道他项目的规模和范围的情况下,你不应该说他必须放弃这个项目。有成千上万的 L2S 应用程序运行良好。只要 SQL 查询保持足够高效,我就没有理由仅仅因为 MS 说 L2S 已死而重做应用程序。
    • @Graham:我没有说他必须放弃这个项目。有大量应用程序使用 RDO/ADO/OLEDB/ODBC 以及微软早已放弃的任何其他数据库技术。为什么建议有人将废弃的技术用于新的代码库?
    【解决方案3】:

    如果您的数据库足够小并且您没有很多查询,请使用 ADO.NET,但如果您要进行任何规模化,请使用实体框架,因为它值得开销。数据生成和原生查询关键字将大大减少错误。

    【讨论】:

    • 您知道 VS 2008 仅使用 EFv1,而不是更新更好的 EFv4,您是否仍保持您的回答?
    • @HK1:是的,VS2008 仅适用于 .NET 3.5 --> EF v1。 EF v4 仅在 .NET 4 上可用 --> 你需要 VS 2010
    • 谢谢,我认为您没有完全理解我的问题。我读到 EF v1 还没有真正准备好使用,但是 VS 2010 中的 EF v4 得到了更好的评价,因为 MS 修复了 EF v1 中存在的许多问题。乔希在他的回答中提到了同样的事情。
    【解决方案4】:

    如果您学习,请使用 EF。倒退有什么意义。 它使开发变得更加容易。 ADO/Dataset 做事的方式已经死了。 此外,如果您转向网络,那么将 EF 与 WCF 数据服务一起使用会很好。这是一个巧妙的技巧。

    其次,为什么要使用 2008。如果你学习,获取最新的工具。速成版真的很棒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2015-12-26
      • 2010-10-26
      相关资源
      最近更新 更多