繼續上一節初始ASP.NET MVC4,繼續深入學習,感受了一下微軟的MVC4+EF5(EntityFramework5)框架的強大,能夠高效的開發出網站應用開發系統,下面就看一下如何用MVC4+EF5來實現數據的讀取。
實現效果
操作步驟
1.創建數據庫
[sql] view plaincopyprint?
--創建表格--
Create table News
(
id int identity(1,1) primary key,
NewsTitle varchar(100)not null,
CreateTime Datetime,
Context text,
Author varchar(10)
)
--插入數據--
insert into dbo.News(NewsTitle,CreateTime,Context,Author)values('學習mvc4',GETDATE(),'我們一起來玩MVC4','丁小未')
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?
public ActionResult Index()
{
Models.MVCDemoEntities db = new Models.MVCDemoEntities();
List<Models.News> news = db.News.Where(u => u.id>0).ToList();
return View(news);
}
編譯成功後,繼續上一節的添加視圖
然後發現在Views文件夾下自動生成了對應的控制器視圖文件,我們打開會發現生成了一個頁面,運行效果就如上面效果圖所示。
[plain] view plaincopyprint?
@model IEnumerable<MvcApplication1.Models.News>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.NewsTitle)
</th>
<th>
@Html.DisplayNameFor(model => model.CreateTime)
</th>
<th>
@Html.DisplayNameFor(model => model.Context)
</th>
<th>
@Html.DisplayNameFor(model => model.Author)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.NewsTitle)
</td>
<td>
@Html.DisplayFor(modelItem => item.CreateTime)
</td>
<td>
@Html.DisplayFor(modelItem => item.Context)
</td>
<td>
@Html.DisplayFor(modelItem => item.Author)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.id }) |
@Html.ActionLink("Details", "Details", new { id=item.id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.id })
</td>
</tr>
}
</table>
效果圖
以上就是最簡單的MVC+EF數據讀取的最簡單的示例,微軟幫我們做了很多工作,但這種自動話生成的操作並不適合我們新手的學習,我們還是自己來手動創建空白文件來實現這個展示的效果,也知道微軟做的這些操作的原理性的東西。
4.自己動手寫頁面來展示自己想要展示的效果
[csharp] view plaincopyprint?
@model IEnumerable<MvcApplication1.Models.News> //進行一個頭文件的引用
@{
ViewBag.Title = "Index";
}
<h2>展示列表</h2>
<table>
<tr>
<td>標題</td>
<td>發佈日期</td>
<td>發佈人</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.NewsTitle</td>
<td>@item.CreateTime</td>
<td>@item.Author</td>
</tr>
}
</table>
這種寫法跟之前的asp時代比較像,也跟現在.net時代下的模板引擎的用法也比較類似!
效果圖
5.添加樣式表
上面的表格沒有樣式實在是太不好看了,簡單添加個樣式表,然後運行看看效果
[csharp] view plaincopyprint?
<style type="text/css">
#tb{
}
#tb tr td{
border:1px solid #090808;
}
</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實在方便多了。
歡迎關注我的圍脖