Asp.net MVC4 使用EF實現資料庫的增刪改查

來源:互聯網
上載者:User

標籤:http   io   ar   os   使用   sp   for   檔案   資料   

EF的使用步驟:(1)將EF添加到項目:在Model右擊添加建立項找到ADO.NET實體資料模型,接著。。。(2)實現資料庫的增刪改查   查詢(因為在Model中已經添加EF實體了,所以就可以在Controller中進行有關的資料庫操作)<<controller>>       //資料內容對象        OrderDBEntities db = new OrderDBEntities();        public ActionResult Index() {            //使用SQO(標準查詢運算子),查詢            //實際返回的是IQueryable 介面的之類對象            //IQueryable<Models.Customer> query = db.Customers.Where(d => d.Address == "111");            //這樣轉有可能報異常 EnumerableQuery<Models.Customer> query = (EnumerableQuery<Models.Customer>)db.Customers.Where(d => d.Address == "111");            //DbQuery 支援消極式載入,就是只有使用到資料的時候,才去查詢資料庫                        //DbQuery<Models.Customer> query = db.Customers.Where(d => d.Address == "111") as DbQuery<Models.Customer>;            //List<Models.Customer> list = query.ToList();            //也可以這樣            // List<Models.Customer> list = db.Customers.Where(d => d.Address == "111").ToList();            //用第二種方式:使用Linq語句,該文法只是給程式員用的,.net編譯器會在編譯器集的時候把它轉化為SQO            //IQueryable<Models.Customer> query = from d in db.Customers where d.Address == "111" select d;            //List<Models.Customer> list = (from d in db.Customers where d.Address == "111" select d).ToList();            List<Models.Customer> list = (from d in db.Customers select d).ToList();           //使用ViewData將資料傳給View            ViewData["DataList"] = list;            return View();        } <<View>><body>    <table border="1">          <!--要取到資料就直接@對應的變數 這樣就可以了(匯入命名空間也是一個道理)-->    @foreach (Customer a in ViewData["DataList"] as List<Customer>)     {        <tr>        <td>@a.Address</td>        <td>@a.CustomerName</td>        <td><a href="/home/del/@a.CustomerNo">刪除</a>            <a href="/home/modify/@a.CustomerNo">修改</a>        </td>        </tr>    }          </table></body>  刪除:<<Controller>> public ActionResult Del(string id) //這個id是通過超連結帶過來的        {            try            {                //需要一個實體物件參數                //db.Customers.Remove(new Customer() {CustomerNo = id });                //1,建立要刪除的對象                Customer modelDel = new Customer() { CustomerNo = id };                //2,將對象添加到EF管理容器中                db.Customers.Attach(modelDel);                //3,修改對象的封裝類對象標識為刪除狀態                db.Customers.Remove(modelDel);                //4,更新到資料庫                db.SaveChanges();                //5,更新成功,則命令流浪器重新導向 到 /Home/Index 方法                return RedirectToAction("Index", "Home");            }            catch (Exception )            {                   //指定對應跳轉的視圖Test下的Test.cshtml檔案               return RedirectToAction("Test", "Test");               //return Content("刪除失敗" + ex.Message);            }        }<<View>>刪除哪有什麼視圖,成功失敗頁面不給出了  修改在視圖裡面肯定又個修改串連,點擊跳轉到對應的頁面,並將參數傳遞給對應的函數<<View>><body>    <table border="1">           <!--要取到資料就直接@對應的變數 這樣就可以了(匯入命名空間也是一個道理)-->    @foreach (Customer a in ViewData["DataList"] as List<Customer>)     {        <tr>        <td>@a.Address</td>        <td>@a.CustomerName</td>        <td><a href="/home/del/@a.CustomerNo">刪除</a>            <a href="/home/modify/@a.CustomerNo">修改</a>        </td>        </tr>    }          </table></body>//調用到控制器中的modify方法,並以表單的形式顯示相應的頁面<<Controller>>  [HttpGet] //加上這個 只要是超連結發送過來的就調用這個        public ActionResult Modify(string id)        {            Customer art = (from d in db.Customers where d.Address == "111" select d).FirstOrDefault();            //將資料傳遞給視圖:用ViewBag viewData 使用view的建構函式            return View(art);        }<<View>>  <body>    @using (Html.BeginForm("Modify", "Home", FormMethod.Post))     {        <table>            <tr>                <td colspan="2">修改</td>            </tr>            <tr>                <td>標題:@Html.HiddenFor(a=>a.CustomerNo)</td>                @*<td>@Html.TextBox("textName",(object)Model.CustomerNo)</td>*@                <!--使用htmlHelper的強型別方法,直接從Model中根據CustoomerNo產生文字框-->                <td>@Html.TextBoxFor(a =>a.CustomerNo)</td>                <td>@Html.TextBoxFor(a =>a.CustomerName)</td>                <td><input type="submit" value="確定修改" />@Html.ActionLink("返回","index","home")</td>            </tr>        </table>    }</body>當使用者點擊修改的時候又將資料以Post方式發送給Home控制器中的Modify函數進行處理<<Controller>> [HttpPost] //表單提交過來的就調用這個方法        public ActionResult Modify(Customer model)        {            try            {                //1,將實體物件加入EF對象容器中,並擷取偽封裝類對象                DbEntityEntry<Customer> entry = db.Entry<Customer>(model);                //2,將偽封裝類對象的狀態設定為unchanged                entry.State = System.Data.EntityState.Unchanged;                //3,設定被改變的屬性                entry.Property(a => a.CustomerName).IsModified = true;                //4,提交到資料庫 完成修改                db.SaveChanges();                return RedirectToAction("Index", "Home");            }            catch (Exception)            {                return RedirectToAction("Test", "Test");            }        }  補充:MVC中頁面之間的跳轉是通過MapRouter代碼如下routes.MapRoute(                name: "Default",                url: "{controller}/{action}/{id}",                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );

 

Asp.net MVC4 使用EF實現資料庫的增刪改查

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.