我目前正处于一个项目的分析阶段,我需要完成一个课程,所以它不仅需要工作,还需要有良好的课堂设计,OOP良好实践等等。
这是一个桌面程序(C#和WPF),可以访问本地单文件单用户数据库(SQL Server CE)。
我的域名包含一个包含“文档”的主表。我希望用户从数据库中打开一个文档,然后从数据库中检索并在内存中存储完整的图形:每个单个文档对象都有各种“儿子”和“孙子”对象集合。从内存到用户界面,用户可以自由地操作文档,但只有在用户点击“保存”时才会保留,例如,就像Word文档一样。
其他问题:给出应用程序的性质,最好打开与数据库的连接并在应用程序运行时保持打开状态,或者最好只在应用程序启用时打开连接实际上保存或读取数据?
我不希望看到我的问题得到实施,只是针对与我的域相关的良好设计模式的一些建议(链接也会很好)。此外,域非常简单,所以我可以自己实现这些模式,而无需使用ORI / M框架,如NHIbernate或Castle(事实上我相信NHibernate对于像这样的简单问题来说太麻烦了),但我不会反对一些简单,小而简单的持久性框架。
答案 0 :(得分:1)
我会将数据库抽象为Connection Factory模式对象。这样你就可以根据需要创建连接对象,并且当它们超出范围时它们可以自行销毁。
这样做意味着您可以使用持久连接,或者不断地建立一堆新连接。这并不重要,因为实现被抽象掉了。
话虽如此,我可能会将其作为持久连接实现 - 与为每个查询建立新连接相关的开销。
答案 1 :(得分:1)
在这样一个简单的场景中,我会选择一个简单的DAO(数据访问对象)。这样可以简化操作并且易于实现,而无需通过针对多用户环境进行优化的ORM映射器。