2011-07-14 16 views
1

我在我的项目中做了大量的非类型化数据集工作,并且已经这么做了一段时间,但是在处理datagridview的就地编辑时,我发现如果使用类型化数据集,验证和内容会更容易。松散耦合不断变化的代码的最佳“当前”MS数据访问技术?

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

我看着实体框架,但它看起来像一些向导必须运行来构建您的数据模型。我并不反对数据模型,但如果它会在运行时产生,那么对数据库的新更改就不需要重新编译软件。

有没有快乐的媒介?或者我坚持在启动一段时间后创建无类型的数据表?

回答

1

当然这都是品味的问题,但我发现数据集是所有邪恶的根源
好吧,也许不是全是邪恶,但它们代表了一个没有与之相关行为的数据结构=>它们不是对象(如在OOP中定义的)=>使用它们会促进非OOP风格的编程(更不用提程序编程)。

的其他一些观点:

  1. GridView的任何其他控制完全支持绑定到对象(而不仅仅是数据集)的列表。
  2. 我认为,如果您必须对数据模型进行更改,那么安装VS的副本并不算太多。
  3. 沿着同样的路线 - 当您对数据模型进行更改时,也不会夸大要求重新编译您的代码。
  4. 如果当你改变你的db中的一个表格时,会强制改变你的用户界面,我会说这不是任何想象力的“松散耦合”。

我相信使用数据集的唯一理由是将数据从数据库中提取出来,然后将数据传输到对象中。但现在,如你所知,如果这不是必要的 - 你有ORM为你做这项工作(EF是一个,nHibernate是另一个更好的选择)。

所以,总之-I 强烈建议您重新考虑您使用DataSets,因为它们违背面向对象的基本知识。

p.s.
对不起,如果这是一个有点情绪 - 我是从痛苦的个人经验谈论。
因为我正在使用的应用程序已经全部使用了DataSets,所以我不得不将所有数据的行为都复制到整个过程中,因为我已经将我的头发拉出了2年。 uughh ....

+0

sJhonny, 我对数据集的使用完全基于它很容易重复使用,与面向对象无关。我有一个SQL类,我在为我返回无类型的东西的项目之间。我与列表的唯一交易就是使用wpf玩了几周。我会采纳你的建议,看看我能不能跟他们做任何事。我的目标是设计一些简单,可教和可重用​​的方法(最小配置工作),用于在线编辑datagridview。 – TWood

+0

@TWood:那么我们同意 - “使用数据集..与OO无关”:)。我认为面向对象是一个不应该受到损害的重要原则。任何谷歌搜索会给你很多资源,为什么这是。希望我已经做了一些事情来说服你... –

+0

我已经想通了我的问题。尽管如此仍在使用数据表。我的对象并不复杂,使用它们的应用程序只是一个用于数据库编辑的GUI。花时间为所有这些东西定义特殊对象和接口并不能真正为我购买任何东西。是的,我意识到它'不是面向对象的推动,但是很多时间都会让事情陷入这种可能不需要的模式中。我来自PLC背景,所以我的逻辑结构与大多数不同。 – TWood