有一件事让我感到困惑,我在书籍/博客中没有多少提及它,是如何在一个真正不属于DAO或存储库管辖范围的系统中处理数据库操作。我喜欢使用通用DAO /存储库的方法来处理常见的数据库操作,但是处理不是实体的事情呢?例如,假设我正在构建一个系统,在少数情况下,我需要调用存储过程来运行批处理操作并返回成功代码。或者,我需要从杂项表中加载日期。或者,我想从表中加载美国州的列表。这些情况肯定会发生,它们实际上可能与系统中的实体或其他对象无关。如果不放弃一个令人讨厌的“misc”DB类,它放弃像NHibernate那样手动使用ADO.NET来进行这些类型的操作,那么OOP人群中还有哪些其他标准方法呢?
答案 0 :(得分:2)
绕过DAO并直接使用ADO连接器(或本机驱动程序)正是每个人所做的事情,并没有任何“令人讨厌”或错误的。如果这些确实适合您,那么您期望什么样的框架?更糟糕的是,当人们围绕他们的DAO包裹各种奇怪的恶作剧时,只是以“不要四处走动<在这里插入DAO>”的名义做一些糟糕的事情。
我的意思是如果你有一个存储过程,那么你显然已经确定数据库不可知论是在窗外(这是一个被高估的目标)所以为什么对使用ADO.Net有疑虑?只是在代码中使它非常明确,不要隐藏它。大声骄傲地说“我正在使用数据库,我不会轻易说出任何人的想法!”。哦,请确保它仍然与其余逻辑分开。由于你的存储过程,我不希望我的单元测试变慢。