1. 程式人生 > >《MVC+EF實現增刪改查》——查

《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 還有很多要學習的地方,繼續奮鬥吧!