在這一節,我們使用VS2010自帶的EF4.0來實現MVC的增刪查改功能,為什么用EF呢?因為如果你自己手寫sqlhelper之類,或者是用動軟,和我們用EF的速度比,太慢太慢··· 當然,新手還是用sqlhelper寫代碼好一些,等你熟練了ado.net就不用sqlhelper,可以用用動軟之類的,幫你免掉繁瑣的增刪改查,更靈活一些,則可以使用 EF和NH之類的ORM框架了···廢話完畢
第一部分:創建 ADO.NET實體數據模型,創建數據庫和表
新建一個空的MVC2空項目,然后在Model層添加一個EF模型,選擇空模型
在出來的edmx模型里面的空白地方,我們右鍵創建實體,也就是以后數據庫對應的一個表
繼續添加 2個標量屬性 (在edmx模型里面,我們把表的列叫做 標量屬性,把表的外鍵叫做 導航屬性)
然后選中空白地方,選擇 根據模型生成數據庫
接下來就是VS根據你剛才生成的EF模型來去數據庫建表了
此時只是生成了sql 的代碼,數據的表還沒有建立,我們在sql上 點擊執行
OK 數據庫搞定,我們去數據庫看看,庫和表 都OK了。我們手動插入幾條數據,以便后面測試
第二部分:在MVC中使用EF來實現增刪改查。
1:首先還是創建一個控制器,有了控制器,我們才能在網址里面訪問不是?
來一個 Admin控制器,勾選 為 Create,Update,Delete和Details方案··
這樣,系統就默認幫我們創建了 增刪改查的 Action。很智能吧?什么?太智能?想自己手寫?···無語··那你用vb語言的asp去,那個什么都手寫···爽死你·· 作為一個從asp轉為asp.net的程序員,你再和我講要自己手寫,我去拿刀···
我們分析一下上面自動生成的幾個Action 由於截圖的大小問題,上面只列出來了 部分幾個而已,簡單的說,就是幫你把常用的增刪改查這4種方式對應的Action都自動生成了
2: 實現 Index 列表
下面我們一個一個來實現,其實感覺就是在貼截圖,貼代碼了,改天我錄個視頻教程吧,有興趣的朋友可以跟着看看詳細的操作步驟
首先我們解決Index這個Action ,既然我們是要在視圖上顯示的,而Action是用來給視圖傳值的,那么我們首先搞定Action里面的數據。之前我是用List來模擬了一下,這次我們用EF來直接返回數據庫里面的數據。 先去找一下EF這個上下文
這個EF上下文就相當於是數據庫的總管,從里面可以拿到所有的東西,下面3行,就是獲得 Admin表的所有數據,只要3行···
有了數據,然后我們還要找個前台視圖來實現吧?開工,在Index里面的 View上右鍵添加視圖,選擇強類型,選擇我們在EF里面的表實體 Admin,如果這里什么都沒有,我們需要先生成一下項目,因為這里是根據項目的程序集反射出來的,所以要先生成項目
然后我們再次生成一下項目,看看 http://XX/Admin/index 數據就出來了吧
接下來,我們看看這個index視圖,里面有些什么
我寫到這里的時候,發現感覺用截圖的方式寫這個教程,會很累,大家看的也很累,我截圖寫的也很累···就如同我以前從asp轉asp.net一樣,如果連最基本的三層架構怎么在VS里面搭配都不會的話,怎么能開始寫.net代碼?如果連基本的MVC操作都不會,只靠截圖,我覺得很難學會,還是去看視頻教程吧。有興趣的朋友可以加入視頻群 217087477
3:實現Create 添加操作
生成項目,查看 http://xx/Admin/Create
這里如果我們點擊頁面的Create,他會提交到一個對應的Action,默認如果你在視圖里面沒有寫表單的Action的話,他會提交到自己
那么這個頁面提交到的Action(注意在mvc里面所有的操作都是對應控制器下的Action而不再是asp.net那樣的頁面)是自己本身,那么我們在Action里面怎么接收到值呢?我們去看Admin控制器
我們修改一下 Create 這個 action,保存一下前台視圖提交的值 也只要3行代碼就OK了 用EF 很爽··
我們試試,生成項目,去剛才的添加頁面,添加數據試試,打個斷點,看看傳過來的數據,請記得,我們在EF實體中是設置過ID為主鍵的,那么他實際是自增的,那么我們傳遞過來的ID有沒有用呢?
我們提交,可以看到ID的值111確實提交過去了,但是數據庫會保存么?
4:實現 Edit 編輯頁面,要注意,這個Action也是有2個的,為嘛呢?一個是get方式用於顯示的,一個是Post再次修改提交的
先寫Get方式的Action代碼的,也就3行搞定
然后我們創建對應的前台View視圖
重新生成項目,我們去前台看看 http://localhost:2180/admin 先進入列表,然后我們看看能否點修改
顯示是OK的,但是ID我們是不希望給別人修改的,怎么來弄呢?我們修改前台的視圖,把ID的顯示刪掉
另外我們先把Post方式的 保存的Action給完成
這樣修改保存 也就OK了
5:最后實現 Delete 刪除。系統自動創建的刪除比較傻,他是先展示了數據,然后再刪除,我們這里演示的時候還是按照系統創建的來刪除(實際項目中,前台給一個js的confirm提示,用MVC的ajax提交到對應的Action刪除完事)
其實這2個用的是一個視圖,我們添加一下
然后我們還是從列表頁查看頁面,點擊刪除試試
在刪除的時候,我們打個斷點看看
實際傳過來的實體也好,參數Id也好,他們的值都是相同的,而且實體里面其他的值都是null,這是因為這里是刪除操作,其他的要不要無所謂
6:最后一個 Details 詳細頁顯示
我們顯示看看
OK 第三節 在MVC使用EF進行增刪改查完畢 另外如果有人看截圖太累看不懂 歡迎進 .net視頻群 217087477