最佳“当前”MS数据访问技术,用于松散耦合不断变化的代码?

时间:2011-07-14 20:43:12

标签: dataset strong-typing

我在我的项目中做了很多非类型化的数据集工作并且已经做了一段时间,但是在使用datagridview的就地编辑时,我发现如果使用Typed Dataset,验证和内容会更容易。

这提出了一个问题,因为我不喜欢使用这些数据集设计器来创建强类型数据表/数据集。在输入数据集时,与使用无类型数据集进行简单更改相比,这样做更难。类型化数据集更改需要安装VS的副本,而非类型化则不需要。我可以在数据库服务器上更改sql视图,应用程序将在我的网格中显示新列。他们可能无法使用新列,但我的大多数东西都是信息显示,所以没关系。

我查看了Entity Framework,但它看起来似乎必须运行几个向导来构建您的数据模型。我不反对数据模型,但如果它会在运行时生成,那么对数据库的新更改不需要软件重新编译就会很棒。

有幸福的媒介吗?或者我是否在启动时暂时创建无类型数据表一段时间?

1 个答案:

答案 0 :(得分:1)

当然,这都是品味问题,但我发现数据集是所有邪恶的根源
好吧,也许不是所有邪恶,但它们代表的数据结构没有与之相关的行为=>它们不是对象(如OOP中所定义)=>使用它们可以促进非OOP样式编程(更不用说过程式编程)。

其他一些观点:

  1. gridviews和任何其他控件完全支持绑定到对象列表(而不仅仅是数据集)。
  2. 我认为,如果您必须对数据模型进行更改,那么安装VS的副本并不是太多问题。
  3. 沿着相同的路线 - 当您对数据模型进行更改时,重新编译代码也不是一个夸张的要求。
  4. 如果,当您更改数据库中的表格时,会强制对您的UI进行更改,我会说它不会被任何想象力“松散耦合”。
  5. 我认为使用数据集的唯一理由是从数据库中提取数据,然后将数据传输到对象中。
    但是现在,如你所知,如果没有必要 - 你有ORM为你做这个工作(EF是一个,nHibernate是另一个,更好,选项)。

    所以,总而言之 - 我强烈建议您重新考虑使用DataSet,因为它们违背了面向对象的基础知识。

    P.S。
    对不起,如果这有点情绪化 - 我正在谈论痛苦的个人经历 因为我正在使用的应用程序全部使用了DataSet,所以我将头发拉了两年,这意味着我们必须全部复制该数据的行为。 uughh ....