[MVC4]ASP.NET MVC4+EF5(Lambda/Linq)讀取數據

繼續上一節初始ASP.NET MVC4,繼續深入學習,感受了一下微軟的MVC4+EF5(EntityFramework5)框架的強大,能夠高效的開發出網站應用開發系統,下面就看一下如何用MVC4+EF5來實現數據的讀取。

實現效果


操作步驟

1.創建數據庫


[sql] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片

  1. --創建表格--  

  2. Create table News  

  3. (  

  4.  id int identity(1,1) primary key,  

  5.  NewsTitle varchar(100)not null,  

  6.  CreateTime Datetime,  

  7.  Context text,  

  8.  Author varchar(10)  

  9. )  

  10.   

  11. --插入數據--  

  12. insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('學習mvc4',GETDATE(),'我們一起來玩MVC4','丁小未')  

  13. insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('我會unity',GETDATE(),'跨平臺的unity也不錯','丁小未')  




創建完畢數據庫,然後添加兩條數據,方便我們後面進行調用。

2.創建Model實體對象

在model文件鼠標右擊->添加->新建項目->數據->ADO.NET實體數據模型,重命名:MVCDemoModel,點擊生成。


連接本地數據庫


選擇數據庫連接


填寫連接信息



選擇某個表


點擊生成,會發現Models文件夾下生成了對應的Model實體對象模型,這就是EntityFramework的強大之處。


下面有一個news.cs文件,打開會發現是實體對象模型


MVCDemoModel文件中的MVCDemoEntities類是操作要顯示的實體對象模型的類


3.在Controller中將數據庫中的數據獲取發送給前端顯示

打開Controller文件,然後添加如下讀取數據的代碼,進行一次編譯


[csharp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片

  1. public ActionResult Index()  

  2. {  

  3.             Models.MVCDemoEntities db = new Models.MVCDemoEntities();  

  4.             List<Models.News> news = db.News.Where(u => u.id>0).ToList();  

  5.             return View(news);  

  6. }  

編譯成功後,繼續上一節的添加視圖



然後發現在Views文件夾下自動生成了對應的控制器視圖文件,我們打開會發現生成了一個頁面,運行效果就如上面效果圖所示。


[plain] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片

  1. @model IEnumerable<MvcApplication1.Models.News>  

  2.   

  3. @{  

  4.     ViewBag.Title = "Index";  

  5. }  

  6.   

  7. <h2>Index</h2>  

  8.   

  9. <p>  

  10.     @Html.ActionLink("Create New", "Create")  

  11. </p>  

  12. <table>  

  13.     <tr>  

  14.         <th>  

  15.             @Html.DisplayNameFor(model => model.NewsTitle)  

  16.         </th>  

  17.         <th>  

  18.             @Html.DisplayNameFor(model => model.CreateTime)  

  19.         </th>  

  20.         <th>  

  21.             @Html.DisplayNameFor(model => model.Context)  

  22.         </th>  

  23.         <th>  

  24.             @Html.DisplayNameFor(model => model.Author)  

  25.         </th>  

  26.         <th></th>  

  27.     </tr>  

  28.   

  29. @foreach (var item in Model) {  

  30.     <tr>  

  31.         <td>  

  32.             @Html.DisplayFor(modelItem => item.NewsTitle)  

  33.         </td>  

  34.         <td>  

  35.             @Html.DisplayFor(modelItem => item.CreateTime)  

  36.         </td>  

  37.         <td>  

  38.             @Html.DisplayFor(modelItem => item.Context)  

  39.         </td>  

  40.         <td>  

  41.             @Html.DisplayFor(modelItem => item.Author)  

  42.         </td>  

  43.         <td>  

  44.             @Html.ActionLink("Edit", "Edit", new { id=item.id }) |  

  45.             @Html.ActionLink("Details", "Details", new { id=item.id }) |  

  46.             @Html.ActionLink("Delete", "Delete", new { id=item.id })  

  47.         </td>  

  48.     </tr>  

  49. }  

  50.   

  51. </table>  

效果圖


以上就是最簡單的MVC+EF數據讀取的最簡單的示例,微軟幫我們做了很多工作,但這種自動話生成的操作並不適合我們新手的學習,我們還是自己來手動創建空白文件來實現這個展示的效果,也知道微軟做的這些操作的原理性的東西。

4.自己動手寫頁面來展示自己想要展示的效果


[csharp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片

  1. @model IEnumerable<MvcApplication1.Models.News>    //進行一個頭文件的引用  

  2. @{  

  3.     ViewBag.Title = "Index";  

  4. }  

  5.   

  6. <h2>展示列表</h2>  

  7. <table>  

  8.   

  9.     <tr>  

  10.         <td>標題</td>  

  11.         <td>發佈日期</td>  

  12.         <td>發佈人</td>  

  13.     </tr>  

  14.   

  15.     @foreach (var item in Model)  

  16.     {  

  17.         <tr>  

  18.             <td>@item.NewsTitle</td>  

  19.             <td>@item.CreateTime</td>  

  20.             <td>@item.Author</td>  

  21.         </tr>  

  22.     }  

  23.   

  24. </table>  


這種寫法跟之前的asp時代比較像,也跟現在.net時代下的模板引擎的用法也比較類似!


效果圖


5.添加樣式表

上面的表格沒有樣式實在是太不好看了,簡單添加個樣式表,然後運行看看效果


[csharp] view plaincopyprint?在CODE上查看代碼片派生到我的代碼片

  1. <style type="text/css">  

  2.     #tb{  

  3.   

  4.     }  

  5.     #tb tr td{  

  6.         border:1px solid #090808;  

  7.     }  

  8. </style>  




6.Linq操作Model

Lambda可以操作Model,Linq同樣也可以查詢返回數據,這兩種效果等同。

//Linq方式

var news =  from n in db.News select n;

//Lambda方式

List<Models.News> news = db.News.Where(u => u.id>0).ToList();

運行的結果是一樣的,之前搞三層寫的比較複雜,現在出了MVC實在方便多了。


歡迎關注我的圍脖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章