MVC新手教程三:Entity Framework 4.0 來實現MVC的增刪改查功能,10分鍾搞定


在這一節,我們使用VS2010自帶的EF4.0來實現MVC的增刪查改功能,為什么用EF呢?因為如果你自己手寫sqlhelper之類,或者是用動軟,和我們用EF的速度比,太慢太慢··· 當然,新手還是用sqlhelper寫代碼好一些,等你熟練了ado.net就不用sqlhelper,可以用用動軟之類的,幫你免掉繁瑣的增刪改查,更靈活一些,則可以使用 EF和NH之類的ORM框架了···廢話完畢

第一部分:創建 ADO.NET實體數據模型,創建數據庫和表

新建一個空的MVC2空項目,然后在Model層添加一個EF模型,選擇空模型

image

在出來的edmx模型里面的空白地方,我們右鍵創建實體,也就是以后數據庫對應的一個表

image

image

繼續添加 2個標量屬性 (在edmx模型里面,我們把表的列叫做 標量屬性,把表的外鍵叫做 導航屬性)

image

然后選中空白地方,選擇 根據模型生成數據庫

image

接下來就是VS根據你剛才生成的EF模型來去數據庫建表了

image

image

image

image

此時只是生成了sql 的代碼,數據的表還沒有建立,我們在sql上  點擊執行

image

image  

OK  數據庫搞定,我們去數據庫看看,庫和表 都OK了。我們手動插入幾條數據,以便后面測試

image image

 

第二部分:在MVC中使用EF來實現增刪改查。

1:首先還是創建一個控制器,有了控制器,我們才能在網址里面訪問不是?

來一個  Admin控制器,勾選 為 Create,Update,Delete和Details方案··

image

這樣,系統就默認幫我們創建了 增刪改查的 Action。很智能吧?什么?太智能?想自己手寫?···無語··那你用vb語言的asp去,那個什么都手寫···爽死你·· 作為一個從asp轉為asp.net的程序員,你再和我講要自己手寫,我去拿刀···

image

我們分析一下上面自動生成的幾個Action  由於截圖的大小問題,上面只列出來了  部分幾個而已,簡單的說,就是幫你把常用的增刪改查這4種方式對應的Action都自動生成了

2: 實現 Index 列表

下面我們一個一個來實現,其實感覺就是在貼截圖,貼代碼了,改天我錄個視頻教程吧,有興趣的朋友可以跟着看看詳細的操作步驟

首先我們解決Index這個Action  ,既然我們是要在視圖上顯示的,而Action是用來給視圖傳值的,那么我們首先搞定Action里面的數據。之前我是用List來模擬了一下,這次我們用EF來直接返回數據庫里面的數據。 先去找一下EF這個上下文

image

這個EF上下文就相當於是數據庫的總管,從里面可以拿到所有的東西,下面3行,就是獲得 Admin表的所有數據,只要3行···

image

有了數據,然后我們還要找個前台視圖來實現吧?開工,在Index里面的 View上右鍵添加視圖,選擇強類型,選擇我們在EF里面的表實體 Admin,如果這里什么都沒有,我們需要先生成一下項目,因為這里是根據項目的程序集反射出來的,所以要先生成項目

image

然后我們再次生成一下項目,看看 http://XX/Admin/index  數據就出來了吧

image 

接下來,我們看看這個index視圖,里面有些什么

image

我寫到這里的時候,發現感覺用截圖的方式寫這個教程,會很累,大家看的也很累,我截圖寫的也很累···就如同我以前從asp轉asp.net一樣,如果連最基本的三層架構怎么在VS里面搭配都不會的話,怎么能開始寫.net代碼?如果連基本的MVC操作都不會,只靠截圖,我覺得很難學會,還是去看視頻教程吧。有興趣的朋友可以加入視頻群  217087477

3:實現Create 添加操作

image

image

生成項目,查看 http://xx/Admin/Create

image

這里如果我們點擊頁面的Create,他會提交到一個對應的Action,默認如果你在視圖里面沒有寫表單的Action的話,他會提交到自己

image

那么這個頁面提交到的Action(注意在mvc里面所有的操作都是對應控制器下的Action而不再是asp.net那樣的頁面)是自己本身,那么我們在Action里面怎么接收到值呢?我們去看Admin控制器

image 

我們修改一下 Create 這個 action,保存一下前台視圖提交的值 也只要3行代碼就OK了  用EF 很爽··

image

我們試試,生成項目,去剛才的添加頁面,添加數據試試,打個斷點,看看傳過來的數據,請記得,我們在EF實體中是設置過ID為主鍵的,那么他實際是自增的,那么我們傳遞過來的ID有沒有用呢?

image   我們提交,可以看到ID的值111確實提交過去了,但是數據庫會保存么?

image

image    這樣添加數據就保存OK了

 

4:實現 Edit 編輯頁面,要注意,這個Action也是有2個的,為嘛呢?一個是get方式用於顯示的,一個是Post再次修改提交的

image

先寫Get方式的Action代碼的,也就3行搞定

image

然后我們創建對應的前台View視圖

image

重新生成項目,我們去前台看看 http://localhost:2180/admin  先進入列表,然后我們看看能否點修改

image

image

顯示是OK的,但是ID我們是不希望給別人修改的,怎么來弄呢?我們修改前台的視圖,把ID的顯示刪掉

image

另外我們先把Post方式的 保存的Action給完成

image

這樣修改保存 也就OK了

5:最后實現 Delete 刪除。系統自動創建的刪除比較傻,他是先展示了數據,然后再刪除,我們這里演示的時候還是按照系統創建的來刪除(實際項目中,前台給一個js的confirm提示,用MVC的ajax提交到對應的Action刪除完事)

image

其實這2個用的是一個視圖,我們添加一下

image

然后我們還是從列表頁查看頁面,點擊刪除試試

image

image

在刪除的時候,我們打個斷點看看

image

實際傳過來的實體也好,參數Id也好,他們的值都是相同的,而且實體里面其他的值都是null,這是因為這里是刪除操作,其他的要不要無所謂

6:最后一個 Details  詳細頁顯示 

image

image

我們顯示看看

image image

 

OK  第三節  在MVC使用EF進行增刪改查完畢 另外如果有人看截圖太累看不懂 歡迎進  .net視頻群  217087477


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM