2008-08-05 25 views
5

我們有一個簡單的實用程序類,用於我們的數據庫調用(圍繞ADO.NET的簡明包裝),但我正在考慮爲每個數據庫/對象創建類。這樣做是否明智,還是隻有在我們使用ASP.NET的完整MVC框架時纔會受益?創建Model類還是使用通用數據庫實用程序類更好?

所以我們有這樣的:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters); 
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters); 
SQLWrapper.Execute(connstr-alias, sql-statement, parameters); 

這樣的思考:

Person p = Person.get(id); 
p.fname = "jon"; 
p.lname = "smith"; 
p.Save(); 

或一個新的紀錄 -

Person p = new Person(); 
p.fname = "Jon"; 
p.lname = "Smith"; 
p.Save(); 
p.Delete(); 

這將是聰明,還是會矯枉過正?我可以看到重用,更改數據庫和維護/可讀性的好處。

回答

8

這個問題被加載,數據驅動設計vs域驅動設計。對於任何具有良好行爲的應用程序,應該首選領域驅動的設計。報告或實用程序應用程序傾向於使用數據驅動設計更好地開發(或更快開發)。

你問的是「我的公司應該如何在設計我們的代碼方面做出根本性轉變」。作爲一個領域怪物,我的直覺反應是尖叫是的。但是,由於問題的簡單性,我不確定您是否完全理解您提議的變更範圍。我認爲你應該多談談你的團隊。

獲取一些文獻,如Evan's DDD書或free foundations ebook,然後您將有更好的位置來判斷您應該去哪個方向。

+0

感謝您的信息,我會研究這些書籍。對不起,我的問題被加載/簡單。我不想寫太多,可能應該只是詢問模型與無模型。我的團隊面臨的問題是,我在這裏是新手,他們正在運行大量和傳統的sphagetti Classic-ASP代碼,並且在使用ASP.Net的某些功能時仍然以這種方式開發。 (以前回答這是一個答案,已根據社區規則刪除) – 2015-09-05 00:24:34

2

MVC絕對不是Web的唯一設計模式,但它是一個有用的模式。

即使您不能/不會採用'V'或'C',在我看來,採用'M'將會產生股息。

+0

感謝您的輸入,我想我會開始添加/替換'M'! (以前回答爲答案,根據社區規則刪除) – 2015-09-05 00:24:52

0

對我來說,看起來你正在嘗試做LINQ已經可以爲你做的事情。如果你被困在一個你不能使用它的舊框架中,我可能會建議你使用Subconic(http://subsonicproject.com/),而不必手工創建所有這些模型對象。

我有一個項目,我處於類似的困境,並在夢幻般的結果中變成亞音速。更快的開發和更容易閱讀/使用代碼。

+0

我正在測試Linq to SQL,因爲我寫這篇文章的時候,它很棒。看起來像是簡單的映射,但它應該足夠我需要的任何東西。絕對是應該生成的東西。 – 2008-10-02 16:28:13

2

你討論的方法被許多人認爲是一個很好的方法,包括我在內!學習這種方法需要一些努力,但不要讓你失望!

剛剛嘗試LINQ to SQL的小項目?或許在google code上找到nice reference project,並研究其他人如何使用它。

這是一個簡單的工具,可以讓您熟悉映射對象到數據庫的一些問題。

然後您將能夠得到它的感覺,並決定是否值得學習曲線。

將會有新的概念來把握和試驗,之類的東西:工作的

  • 單位:當您執行保存和刪除等,一個ORM往往不能馬上做到這一點,而一個基於記錄集的DAL將會。這可能令人驚訝,所以你需要了解一點。請閱讀工作單元模式以瞭解這一點。
  • 批量操作是OR/M的問題。數據讀取器可以有效地遍歷數千行,但對於使用ORM,在處理大批對象時必須小心。再次,一個閱讀。
  • 協會似乎很棒,當可以做像customer.Orders.Count的東西,但他們也是許多問題的原因。在使用關聯時,您需要找到一些安全的做法。

...僅舉幾例。對於初學者來說,不要擔心繼承和東西,只需簡單地開始,並且有簡單的映射到表的實體。

請嘗試按照您使用現有DAL的相同方式使用它們。然後開始試驗關聯。

然後嘗試在你的實體中放置更多的行爲。如果您開始喜歡這一點,並且覺得您需要更多功能,請考慮嘗試使用功能更豐富的ORM,如LightspeedNHibernate

希望這會有所幫助!

相關問題