一件事一直困扰着我,我在书籍/博客中没有看到太多提及,那就是如何在一个真正不受 DAO 或存储库管辖的系统中处理数据库操作。我喜欢使用通用 DAO/Repositories 的方法来处理常见的 DB 操作,但是如何处理非实体的东西呢?例如,假设我正在构建一个系统,在某些情况下我需要调用一个存储过程来运行批处理操作并返回一个成功代码。或者,我只需要从杂项表中加载日期。或者,我想从表格中加载美国各州的列表。这些情况肯定会发生,而且它们实际上可能与系统中的实体或其他对象没有任何关系。无需放弃讨厌 NHibernate 之类的东西来手动使用 ADO 的讨厌的“杂项”数据库类。
问问题
607 次
1 回答
2
绕过 DAO 并直接使用 ADO 连接器(或本机驱动程序)正是每个人都在做的事情,并且没有任何“讨厌”或错误的地方。如果这些确实是您的边缘案例,那么您期望什么样的框架?更糟糕的是,人们在他们的 DAO 周围使用各种奇怪的恶作剧来做一些很糟糕的事情,只是以“不要绕过 <在此处插入 DAO>”的名义。
我的意思是,如果您有一个存储过程,那么您显然已经确定 DB 不可知论已经不在了(无论如何这是一个被高估的目标),那么为什么对使用 ADO.Net 有疑虑呢?只需在代码中非常明确,不要隐藏它。大声而自豪地说“我正在使用数据库,我不关心任何人的想法!”。哦,请确保它仍然与您的其他逻辑分开。我不希望我的单元测试因为您的存储过程而变慢。
于 2009-11-30T14:17:26.163 回答