2009-11-30 26 views
0

有一件事让我难以理解,而且我在书籍/博客中并没有多少提及它,那就是如何处理真正不属于系统的数据库操作DAO或知识库的管辖权。我喜欢使用通用DAO /存储库的方法来处理常见的数据库操作,但是如何处理不是实体的东西呢?例如,假设我正在构建一个系统,并且在少数情况下,我需要调用存储过程来运行批处理操作并返回成功代码。或者,我需要从一个杂项表中加载一个日期。或者,我想从表格中加载美国各州的列表。这些情况肯定会发生,并且它们确实可能与系统中的实体或其他对象没有任何关系。没有放弃讨厌的“misc”数据库类放弃像NHibernate的东西手动使用ADO.NET来做这些类型的操作,什么是OOP人群的其他标准方法?DAO /知识库/ NHibernate和处理边缘数据库案例

回答

2

绕过DAO并直接使用ADO连接器(或本地驱动程序)正是每个人所做的事情,没有什么“讨厌”或错误的。如果这些确实是你的边缘情况,那么你会期望什么样的框架?更糟糕的是,当人们围绕他们的DAO包装各种奇怪的恶作剧时,他们只是以“不要在<插入DAO这里插入DAO >”的名义做一些事情。

我的意思是如果你有一个存储过程,那么你显然已经决定数据库不可知论在窗口之外(这是一个被高估的目标),那么为什么有关使用ADO.Net的疑虑?只要在代码中非常明确,不要隐藏它。大声说出自己的感受:“我正在使用数据库,而且我不会轻弹任何人的想法!”。哦,请确保它仍然与你的其他逻辑分开。我不希望我的单元测试由于存储过程而变慢。

+0

是的,很好的建议。谢谢。 – Bobbie 2009-11-30 14:58:27