《MVC+EF實現增刪改查》——查
在MVC的控制器中查詢資料庫中的資料,然後在用檢視顯示出來,這套流程是怎麼走的哪,下面我自己先巨集觀的總結一下。
首先,在Controllers資料夾下建立HomeController控制器,然後在ActionResult Index()方法右擊——>新增檢視。然後在HomeController頁面引用名稱空間(Models)。
一、查詢資料
查詢資料的時候,我總結了四種方式,下面一個個介紹。
1、第一種查詢方式是使用標準的運算子(SQO)查詢
OumindBlogEntities db = new OumindBlogEntities();//例項化資料庫實體物件 IQueryable<Models.BlogArticle> query= db.BlogArticles.Where(d => d.AIsDel==false);
2、使用DBQuery延遲載入資料查詢
OumindBlogEntities db = new OumindBlogEntities();//例項化資料庫實體物件
DbQuery<MvcApplication1.Models.BlogArticle> query = (db.BlogArticles.Where(d => d.AIsDel == false)) as DbQuery<MvcApplication1.Models.BlogArticle>;
延遲載入這特別的好玩,大家可以到網上查詢一下相關的資料。
3、使用List直接查詢資料庫,防止延遲載入資料
List<Models.BlogArticle> list = db.BlogArticles.Where(d => d.AIsDel == false).ToList();
4、使用Linq語句查詢
List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();
使用linq語句查詢的時候,它的邏輯是:首先說明在哪個實體中查詢資料(from d in db.BlogArtiticles)然後是將要查詢的條件(where d.AIsDel == false),最後在實體中查詢出來(select d)。使用Linq語句,.NET 編譯器在編譯程式集的時候,也就是將程式集編譯成中間程式碼的時候,將Linq語句轉為SQO(標準查詢運算子)來執行,只不過Linq語句讓程式設計師敲起來比較“爽”而已。
二、將資料傳送給相應的檢視
1、使用ViewBag傳送資料
ViewBag.DataList = list; //使用ViewBag傳輸資料
ViewBag是動態型別的,他的好處是我們可以隨便給他新增屬性
2、使用ViewData傳送資料
ViewData["DataList"] = list;//使用ViewData["DataList"]傳輸資料
return View();//載入檢視
三、顯示頁面
傳送給檢視的是一個List,是一堆資料,檢視需要將這一堆資料獲取到,然將將其組織起來,這樣才能形成美觀的頁面。下面在Index.cshtml中將list中的資料遍歷出來,然後顯示在頁面上。
<table id ="tbList">
<tr>
<th>ID</th>
<th>標題</th>
<th>分類</th>
<th>狀態</th>
<th>時間</th>
<th>操作</th>
</tr>
<!--遍歷Action方法 設定給ViewData的集合資料,生成HTML程式碼-->
@foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
{
<tr>
<td>@a.AId</td>
<td>@a.ATitle</td>
<td>@a.BlogArticleCate.Name</td>
<td>@a.Enumeration.e_cname</td>
<td>@a.AUpdatetime</td>
<td>
<a href="javascript:del(@a.AId)">刪</a>
<a href="javascript:(@a.AId)">改</a>
</td>
</tr>
}
</table></span>
給這個table添加個樣式,讓其美觀一些
<style type="text/css">
#tbList {
border:1px solid #0094ff;
width:800px;
margin:10px auto; /*上下10px;左右水平居中*/
border-collapse:collapse;/*設定為收縮邊框*/
}
#tbList th, td {
border:1px solid #0094ff;
padding:10px;/*將內容與單元格填充開*/
}
這樣,資料就完美的呈現在瀏覽器介面了,下面是效果圖。
四、總結
終於寫完了,這些東東包含著很多的知識點,我們只有經常使用,經常練習,這樣才能將效率提升上去。在這裡我感受到EF做的的確挺強大,可以聯查,再配合Razor語法的使用,方便了程式設計人員的使用。.NET 還有很多要學習的地方,繼續奮鬥吧!