c# - 数据集或实体数据模型

标签 c# sql

请原谅菜鸟问题,因为我不熟悉将数据与我的应用程序集成。我试图在网上找到答案,但目前还没有。

我有一个在 VS2010 上用 C# 开发的应用程序,它需要从数据库输入/输出数据。我试图弄清楚在设置数据源时是否需要使用它的数据集或实体数据模型。我的理解是,正是 EDM 允许我将数据库中的表/字段视为对象,但不知何故,我似乎也可以使用 DataSet 来做到这一点。

一些消息来源解释说,数据集创建了数据库的缓存副本,然后可以对其进行操作。

基本上我的问题是我应该使用哪个以及一个相对于另一个的(缺点)优势是什么。

最佳答案

在向数据库存储数据和从数据库检索数据时,您有多种选择:

  1. 在最简单的级别,使用 ADO.NET 打开与数据库的连接,创建命令并执行它。如果您期望返回结果(即 SELECT ...),那么您可以调用命令的 ExecuteReader(...) .以这种方式工作可以实现非常快速的执行和最小的开销,但您必须完成更多繁重的工作。如果您的应用程序很简单,这可能是一个不错的选择。如果您的应用现在或可能更复杂,您可能需要考虑其他选择...
  2. ADO.NET 数据集是一种合理的数据库 IO 机制,尤其适用于从数据库读取数据。但是,它们在尝试更新数据库时可能会有点麻烦。
  3. 您可以使用像 nHibernate 或 Entity Framework 这样的对象关系映射器 (ORM),但坦率地说,这通常会导致您的学习曲线急剧增加,同时您还要弄清楚如何将移动部件组合在一起并使它们很好地协同工作.
  4. 您还可以考虑一种称为代码优先 (CF) 的 Entity Framework 的新变体:这允许您设计代码,CF 将生成 EDM 并处理构建系统所需的大部分数据库操作. Scott Hanselman wrote up a nice intro into EF CF .

在过去的 20 多年里,我几乎使用了 Windows 上的所有 DB API 和 ORM,我对 CF 的发展感到很高兴!几周前发布的 EF 4.3 包括对 CF 的一些重要新改进,包括允许您在数据库模式发展时处理更改的迁移。在过去的几个月里,我使用 EF CF 构建了 3-4 个系统,我非常高兴 - 这是我目前最喜欢的关系数据库 IO 机制。

如果你想真正进入EF CF,I strongly recommend Julia Lerman's book EF CF - 这是一个简短、写得很好、非常有用的指南,您只需一两天就可以完成主要部分。

希望这对您有所帮助。

关于c# - 数据集或实体数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508564/

相关文章:

c# - 如何拥有动态 DataTemplateSelector

c# - 覆盖时是否必须调用基本实现?

c# - 如何解决 "Cross-thread operation not valid"?

c# - Postgresql 和 Entity Framework

mysql - 'order clause' 中的未知列

asp.net - 如何用数学方法缩短网址

c# - 碰撞检测有问题

sql - SQL select 的 Big-O 是什么?

mysql - SELECT * 与 SELECT * LIMIT(性能)

sql - 如何从最大计算中获取完整行?