实体框架 4 还是 DataSet?

Posted

技术标签:

【中文标题】实体框架 4 还是 DataSet?【英文标题】:Entity framework 4 or DataSet? 【发布时间】:2011-04-18 19:43:12 【问题描述】:

对于将在经典 LAN 网络(1 个服务器和最多 25 个客户端)上运行的基本 ERP(包含大约 150 个表的数据库,WinForm 应用程序),您会推荐 EF4 还是 DataSet ?

LINQ2SQL 不是一个选项!

【问题讨论】:

在选择这些东西时,我们需要了解性能要求以及数据在数据库中的存储/布局方式。您能否分享一下关于性能和数据库表结构的内容? 这是一个经典的桌面(多OLTP/少OLAP)应用程序,后端有MSSQL2008X数据库(大部分逻辑都内置在存储过程和关系中),关于销售、采购、订单、库存、生产但小范围内! 您可以将存储过程与 EF4 结合使用 - 将 SP 映射到对象创建。但即使您不想使用 EF4,我仍然会拒绝使用 DataSet。对象更容易处理。 【参考方案1】:

你可以根据应用逻辑来选择EF,EF可以给你更多的选择但是我认为我们不能根据表的数量来决定。

查看这篇文章将帮助您做出决定:

Why use the Entity Framework?

还可以观看这个精彩的视频:Data Development GPS: Guidance for Choosing the Right Data Access Technology for Your Application Today

【讨论】:

videoLink 已死,去这里更新:channel9.msdn.com/Events/TechEd/NorthAmerica/2010/DEV324【参考方案2】:

即使您不选择 EF4,DataSet 也不是唯一的选择。

更愿意使用POCOs 而不是DataSet。

对象比数据集更容易操作。例如,验证 POCO 中的数据非常简单且易于维护。在 DataSet 中两者都不是。

【讨论】:

【参考方案3】:

EF4. DataSet 是一项古老的技术,EF 在很多方面都是对数据集问题的反应。

我们最近构建了一个应用程序,其中一部分是对 80 个表的 CRUD 操作。在 EF 之前,我们会使用企业库和数据集。我们估计每个表需要 1 个小时来编写 CRUD 操作和单元测试。使用 EF,这主要被自动生成的代码所取代。

【讨论】:

@Michael Maddox,是的,它实际上是一个集成测试,因为它会命中数据库。我们把它放在一个事务范围内,这样它就不会改变数据库。基本上,他们检查没有人在不更新 EF 模型的情况下更改创建数据库的脚本。使用代码优先的方法,这会有点不同。 你加载了多少条记录?将 20000 条记录(行)加载到带有实体框架的网格中是否可行? @threeFourOneSixOneThree,你应该问这个问题【参考方案4】:

这是一个非常开放的问题,没有太多支持信息。这种决定涉及很多因素。只是你在开发还是一个团队。无论哪种方式,您对 EF 有什么经验?如果您没有丰富的经验并且时间紧迫,使用数据集完成工作可能会更快。

抛开这些类型的问题不谈,我是 ORM 的忠实粉丝,我认为从长远来看它会让生活更轻松。但如果您不熟悉某些概念,尤其是陷阱(例如 Select N+1 问题),它确实有一个学习曲线。

【讨论】:

这是一个经典的桌面(多OLTP/少OLAP)应用程序,后端有MSSQL2008X数据库(大部分逻辑都内置在存储过程和关系中),关于销售、采购、订单、库存、生产但小范围内!

以上是关于实体框架 4 还是 DataSet?的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 和 DataSet 现在应该过时了吗?

dataset是类还是对象?具体讲解一下dataset的知识。。。

哪个更好:DataSet 还是 DataReader?

C#之三十七 实体类

无法将输入 xml 文件内容转换为 DataSet。未找到请求的值“ConnectionStrings”

4.遍历DataSet