我追求更多的方向和链接到资源来学习,而不是编码建议。
作为一个测试项目,我们正在C# Winforms中开发Visual 2013中的应用程序,该应用程序主要是Server 2012数据库上驱动的数据。看起来,数据源/数据集/表引导器/数据表等对简化这件事有很大帮助,但一旦你增加了一点复杂性,它似乎就变得更加困难了,从我的谷歌搜索中,每个人似乎都以不同的方式实现了他们需要的东西。
例如,目前我正在使用选项卡控件构建一个多级表单,该控件提示用户输入信息,然后将其添加到数据库中。在第一个表单上,我可以轻松地附加数据源,然后从"Details“抓取和拖动表单元素,而不是gridview。这会生成顶部的“工具栏”,它具有浏览记录、保存等选项。这在基本级别上运行良好,但当我想对数据做更多的操作时(例如,我希望引用另一个表中的一个列和数据集之外的一个列,用一个选项列表填充一个组合框,然后形成一个插入,我必须手动编写代码才能这样做。
我们需要创建数百个这样的表单,所以我想确保我做的方法是正确的。因此,我的问题是:
1)我这样做是选择、创建和操作数据的最简单方法吗?
( 2)在如何正确处理数据资源并操作所有元素(书籍/教程等)方面,是否有好的资源?
3)是否有任何关于如何操作数据集选项的资源(比如保存不使用生成的工具网格控件进行的更改的能力)。
我意识到我在这里已经超出了我的深度,这个问题可能显得支离破碎,但我愿意学习,我只是不知道该学什么。任何方向都会受到极大的赞赏。
发布于 2014-08-12 19:07:03
正如你在问题中提到的,这是一个相当大的课题。对于我将要提到的一些技术,将会有一个重要的学习曲线。然而,好处将是更可靠的,更易于维护的现代代码。
这些观点已经在评论中列出了,但我认为更多的细节和方向可能会有所帮助:
ORMs (对象-关系映射)
我试图避免DataTables,DataSets就像瘟疫一样,因为我不想引用带有索引或硬编码字符串的单元格,后者只返回一个非类型化对象。
更现代的方法是在应用程序中有表示数据库表的对象,并将您的类型化数据映射回它们。
- Microsoft's offering, which I am not too fond of. I have had too many developer days lost on trying to get a specific entity regenerated on a different developer machine and also too many days lost dealing with releases due to poor handling of different schema names.
- [http://msdn.microsoft.com/en-us/data/ef.aspx](http://msdn.microsoft.com/en-us/data/ef.aspx)
- This is a formerly commercial offering that is now open source. This is my current preferred ORM because it is fairly simple, but handles many of the pitfalls that other ORMs have. EntitySpaces also comes with its own entity generation software. The wiki entry gives a quick overview of supported databases and some basic query code you would write ([https://en.wikipedia.org/wiki/EntitySpaces](https://en.wikipedia.org/wiki/EntitySpaces)).
- [http://entityspaces.net/www.entityspaces.net/Portal/Default.aspx.html](http://entityspaces.net/www.entityspaces.net/Portal/Default.aspx.html)
- [http://download.cnet.com/EntitySpaces-Studio/3000-10250\_4-10590953.html?tag=mncol;1](http://download.cnet.com/EntitySpaces-Studio/3000-10250_4-10590953.html?tag=mncol;1)
- [https://github.com/EntitySpaces/EntitySpaces-CompleteSource](https://github.com/EntitySpaces/EntitySpaces-CompleteSource)
- This is a fairly popular ORM choice that is open source and fairly powerful Configuration and initial setup is a very daunting task for new users. Also, nHibernate seems to require rolling your own functionality or finding an existing solution from somewhere else for much of what is included with EntitySpaces.
- [http://nhibernate.info/](http://nhibernate.info/)
即使您最终使用了WinForms,我也强烈建议您仍然使用ORM。
WPF
如果您必须处理多个字体/DPI设置,Windows窗体在绘制自身方面是非常糟糕的,这是因为Windows继续添加了一个额外的字体缩放类型,但仍然支持旧的XP样式。此外,将控件绑定到Windows窗体中的数据值一直处于可怕的边缘。
WPF是围绕绑定构建的,它确实消除了WinForms中发生的许多痛苦。如果您正确地使用了WPF,那么在许多情况下,您也可以编写更少的代码。不幸的是,要实现WPF的潜力,还需要学习MVVM (Model )模式。您仍然可以像编写WinForms应用程序一样自由地编写WPF应用程序,但是如果您这样做的话,您就真的错过了。
要强调的两个重要概念是:绑定、和命令。如果您得到这些和其他一些下降,那么您将在您的道路上使用WPF和MVVM。许多开发人员使用MVVM (https://mvvmlight.codeplex.com/)删除在MVVM中开发的一些手动方面,例如创建ViewModel和基本命令。
结论
我认为,如果你学到了这两门学科的全部知识,你就会在编写任何你需要的应用程序的路上做得很好。不幸的是,我不确定WPF/MVVM的哪一本书是好的,所以你可能不得不在因特网上使用拖网。ORM的知识也可以这么说,因为有很多这样的知识。
https://stackoverflow.com/questions/25247548
复制相似问题