2009-11-30 24 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