曾幾何時,動軟代碼生成器是一種非常方便的工具,很多從事C#語言的開發人員都用過這個工具,當然也包括樓主本人。
以往的開發模式都是圍繞數據庫為中心展開的,先設計好數據庫,然后再編寫代碼。動軟代碼生成器就是在這樣的背景下誕生的。
你只要設計好數據庫模式,然后用動軟代碼生成器一鍵生成數據訪問層代碼,非常方便。(雖然動軟有業務層,但我認為那是雞肋,只不過是數據訪問層的一層簡單包裝,沒有實際意義)
這對不想手動編寫枯燥乏味的數據庫操作的開發人員來說,非常有吸引力。
下面樓主憑借自己的經驗,從好與壞兩個方面來總結動軟代碼生成器。
優勢
一、自動生成實體類和數據訪問代碼。
二、大部分數據庫操作都能滿足,包括分頁
三、快速開發
劣勢
一、生成的實體類缺少關聯性,而大部分實際項目都需要導航
二、缺少數據庫事務支持,所有的操作都是單表的
三、對有些類型支持不好,比如date和新的datetimeoffset
四、查詢的數據是基於DataSet而不是實體,讓人感覺很怪
五、數據庫結構修改就要手動生成代碼,如果你修改了動軟生成的文件,那就等着哭吧。
六、不支持從代碼生成數據庫(Code First)。
IT領域有句非常著名的格言:沒有銀彈。沒有一勞永逸的解決方案,沒有萬能葯。代碼生成器不是銀彈。很多年前,我聽過這樣一種說法,代碼生成器可以代替開發人員。
這樣說的原因有兩個:一,你的開發人員太爛,跟代碼生成器差不多;二、你的產品太爛,用代碼生成器都可以搞定。不管哪種原因,說這話的人就很爛,哈哈!
隨着IT技術的快速發展,涌現出很多優秀的工具可以替代代碼生成器。樓主是做.Net的,給大家推薦幾個不錯的工具,知道的就權當班門弄斧,不知道的就當做學習。
首推微軟的Entity Framework,其次是NHibernate。Entity Framework是微軟親兒子,和微軟自家的Sql Server集成得很好。NHibernate是開源的,支持數據庫比較多,可移植性好。
如果你不喜歡這些重量級的框架,那么可以考慮用ibatis和dapper。就樓主而已,如果可以選擇的話,我會考慮用一下Entity Framework和Linq。Linq真是太牛逼了,不得不佩服微軟。
