我有一個用ASP.Net 2.0 Web Form編寫的系統。與MySQL服務器交流的框架非常酷。它讀取服務器表單標籤或面板內的所有控件,並在目標表上執行CRUD操作。EF + SQL Server:代碼優先還是數據庫優先
當我創建CRUD頁面時,我只需要在數據庫用戶{id,name,password,createdate}中創建表,並且我只需要使用id作爲表中的確切列名。這些控件可以是輸入/選擇/選項/ chekbox/textarea,甚至可以是頁面上的FCK編輯器或CK編輯器。該框架遍歷面板內的所有控件並保存/編輯/刪除。如果我想添加一些新的字段,電子郵件和移動設備,我只需要在頁面上添加兩個控件,並在表格中添加兩列。而已。我不必在page.aspx.cs文件,實體層,業務層或數據訪問層中更改任何內容。這是非常容易實施和維護。
我們希望升級系統以使用ASP.Net 4 MVC3與Entity Framework CT5。我們將從頭開始重建整個系統。我希望這裏的一些專家能夠給我一些指點。我發現了以下兩個選項來重建系統。
1. Code First 我們的新系統將完成與上述框架完全相同的操作。它將遍歷所有Request.Forms數據,並將它們與其數據庫中的關聯表映射並保存/更新/刪除所有數據。爲此,view將發佈表單數據,控制器將接受Entity類的值並通過EF將它們保存到數據庫中。我仍然需要創建ViewModel類來在View上顯示數據。如果有添加電子郵件和移動字段到用戶頁面的任何更改,我仍然需要更改三個位置查看,實體(域類)和ViewModel。我不必在數據庫中更改任何內容,因爲EF會自動運行ALTER TABLE以添加兩個新字段。我仍然不知道如何最小化實體和視圖模型類的需求。
2.數據庫首先 我真的不喜歡這種方式,但我會,如果這個解決方案提供了更靈活的操作。我將在數據庫中創建列,系統將動態創建ViewModel(我仍在弄清楚如何執行此操作),讀取表中的所有列,並在頁面上顯示數據。當視圖發佈數據時,它需要動態創建實體類並將更改保存到數據庫。編輯: 升級當前系統的原因。
- 我們希望使用新功能的動力是.NET 4中的LINQ,實體框架,不顯眼的JavaScript庫,easifer使用JSON數據工作,遠程驗證(我們可以使用RequireFieldValidator,RegExValidator在當前的系統,但他們是有限的,例如:對輸入複選框和選項進行驗證),用var和界面進行鴨子打字。
這聽起來像你甚至沒有你當前的系統中的實體或業務層,只是一個數據訪問層(mysql框架)。你重寫的原因是什麼?只是爲了擺脫視圖狀態?任何其他動機? – danludwig 2012-08-02 11:40:39
這聽起來像你不需要重寫應用程序。首先... – 2012-08-02 12:10:28
這不僅僅是擺脫了ViewState。我們通常使用RequiredFieldValidator,RegularExpressionValidator和page.aspx.cs文件中的一些附加驗證完成所有驗證。我們在當前系統中也不會使用Session或Viewstate。我添加了我們想升級系統的原因。在我們開始確保系統像舊系統一樣易於維護之前,我仍在考慮架構。 – 2012-08-02 12:52:05