生成用户可定义文档的动态CRUD应用程序的设计模式?

时间:2013-10-02 12:12:08

标签: c# wpf design-patterns crud dynamically-generated

我正在构建一个用于管理人力资源决策的C#桌面应用程序(例如,合同终止,请求许可的批准......)。 这些决定将产生若干Office文件(例如合同,清单......)。

最终用户必须能够:

  • 定义新的决策类型,
  • 定义相应文档的内容(我的意思是,定义样板文本,以及需要插入字段数据的位置),
  • 更改给定DecisionType的文档内容。

我想到的设计

类Decision有一个字段decisionType。 DecisionType类有一个属性 FieldsList ,它列出了DecisionType具有的所有字段的名称及其数据类型。

当最终用户点击按钮输入新决定时,应用程序会生成用户表单(我认为WPF更适合这个,然后是WinForms,尽管我从未使用过它)这允许创建所选DecisionType的新决策。此表单包含该类型决策所使用的字段所需的仅限控件。该应用程序添加了所有必需的数据绑定。

最终用户管理每个DecisionType的文档内容

  • 锅炉板文字,
  • 需要插入持久数据的位置。

这被保存为一个字符串,其中需要插入字段数据的位置由代码表示(例如,字段BeginDate的“/ [bd]”。

数据库使用单个表进行所有决策(尽管大多数DecisionTypes不会使用所有字段)。

但是......也许你们人们知道更好的方式吗?

1 个答案:

答案 0 :(得分:0)

好吧,似乎只有一张桌子无济于事。我的意思是,你必须在Decision one之外创建一个Person类。每个人可能有一个或多个决定,而决定应由另一个人编辑。

我们举个例子:

  1. John做出决定并将其保存为Decision A
  2. 保罗同意Decision A,但希望得到其他一些意见。
  3. 我想你可以看到这是怎么回事 关于技术,我肯定会使用WPF - 虽然它的学习曲线更陡峭,但是一旦你掌握了它,你几乎可以做任何事情。 WPF还建议采用MVVM方法,这将大大缩短您使用数据绑定的时间。
    至于数据库,我推荐Entityframework。它的Code First方案非常容易理解,你会发现很多信息。

    一些有用的链接:
    www.wpftutorial.net - Very basic, introductory WPF info, great for starters

    CodeProject - MVVM Example for Beginners

    Julie Lerman's Entity Framework website - She's one of the best at it!

    不要放弃,祝你好运。