最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Entity Framework之DB First方式詳解

 更新時(shí)間:2017年07月24日 15:57:42   作者:zhjchhahaha  
這篇文章主要為大家詳細(xì)介紹了Entity Framework三種方式之一DataBase First,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

EF(Entity Framework的簡稱,下同)有三種方式,分別是:DataBase First、 Model First和Code First。

下面是Db First的方式:

1. 數(shù)據(jù)庫庫中存在兩個(gè)表,一個(gè)是專業(yè)表,一個(gè)學(xué)生表,一個(gè)學(xué)生只能屬于一個(gè)專業(yè):

其中T_Major是專業(yè)表,T_Student是學(xué)生表,StudentId是學(xué)號,MajorId是專業(yè)Id,T_Major與T_Student是一對多的關(guān)系。

2. 項(xiàng)目中添加數(shù)據(jù)庫實(shí)體模型

因?yàn)橹皼]有配置過數(shù)據(jù)庫連接,所以點(diǎn)擊“新建庫連接”,如果之前配置過數(shù)據(jù)庫連接,可以直接從下拉列表中選擇或者新建

選擇需要生成的表/存儲過程等

點(diǎn)擊“完成”

這里會(huì)彈出如下圖的窗口,然后選擇確定(如果再彈出,也選擇確定),如果不小心點(diǎn)擊了取消,可以在模型設(shè)計(jì)界面Ctrl + S(保存的快捷鍵),或如下圖的操作,然后會(huì)彈出窗口,一直確定就行。

這里是使用MVC,所以添加一個(gè)控制器來測試(這里為了快速生成讀寫的控制器方法,選擇“包含讀/寫操作的MVC5控制器”)

生成代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Zhong.Web.Controllers
{
  public class StudentController : Controller
  {
    // GET: Student
    public ActionResult Index()
    {
      return View();
    }

    // GET: Student/Details/5
    public ActionResult Details(int id)
    {
      return View();
    }

    // GET: Student/Create
    public ActionResult Create()
    {
      return View();
    }

    // POST: Student/Create
    [HttpPost]
    public ActionResult Create(FormCollection collection)
    {
      try
      {
        // TODO: Add insert logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }

    // GET: Student/Edit/5
    public ActionResult Edit(int id)
    {
      return View();
    }

    // POST: Student/Edit/5
    [HttpPost]
    public ActionResult Edit(int id, FormCollection collection)
    {
      try
      {
        // TODO: Add update logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }

    // GET: Student/Delete/5
    public ActionResult Delete(int id)
    {
      return View();
    }

    // POST: Student/Delete/5
    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
      try
      {
        // TODO: Add delete logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }
  }
}

同樣的方法添加一個(gè)Major控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Zhong.Web.Controllers
{
  public class MajorController : Controller
  {
    // GET: Major
    public ActionResult Index()
    {
      return View();
    }

    // GET: Major/Details/5
    public ActionResult Details(int id)
    {
      return View();
    }

    // GET: Major/Create
    public ActionResult Create()
    {
      return View();
    }

    // POST: Major/Create
    [HttpPost]
    public ActionResult Create(FormCollection collection)
    {
      try
      {
        // TODO: Add insert logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }

    // GET: Major/Edit/5
    public ActionResult Edit(int id)
    {
      return View();
    }

    // POST: Major/Edit/5
    [HttpPost]
    public ActionResult Edit(int id, FormCollection collection)
    {
      try
      {
        // TODO: Add update logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }

    // GET: Major/Delete/5
    public ActionResult Delete(int id)
    {
      return View();
    }

    // POST: Major/Delete/5
    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
      try
      {
        // TODO: Add delete logic here

        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }
  }
}

由于學(xué)生表MajorId依賴于Major表,所以需要先有專業(yè),才能新增學(xué)生數(shù)據(jù)(這里不討論是否合理)

編寫邏輯代碼,創(chuàng)建視圖

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Zhong.Web.Models;

namespace Zhong.Web.Controllers
{
  public class MajorController : Controller
  {
    // GET: Major
    public ActionResult Index()
    {
      var majors = new EFDbEntities().T_Major.ToList();
      return View(majors);
    }

    // GET: Major/Details/5
    public ActionResult Details(int id)
    {
      var major = new EFDbEntities().T_Major.Find(id);
      if (major == null)
      {
        return Content("參數(shù)錯(cuò)誤");
      }
      return View(major);
    }

    // GET: Major/Create
    public ActionResult Create()
    {
      return View();
    }

    // POST: Major/Create
    [HttpPost]
    public ActionResult Create(T_Major entity)
    {
      if (entity != null)
      {
        var entities = new EFDbEntities();
        entities.T_Major.Add(entity);
        entities.SaveChanges();
      }
      return RedirectToAction("Index");
    }

    // GET: Major/Edit/5
    public ActionResult Edit(int id)
    {
      var entity = new EFDbEntities().T_Major.Find(id);
      if (entity == null)
      {
        return Content("參數(shù)錯(cuò)誤");
      }
      return View(entity);
    }

    // POST: Major/Edit/5
    [HttpPost]
    public ActionResult Edit(T_Major entity)
    {
      if (entity == null)
      {
        return Content("參數(shù)錯(cuò)誤");
      }
      var entities = new EFDbEntities();
      #region 方式一 
      ////該方式一般是根據(jù)主鍵先讀取數(shù)據(jù),然后再逐個(gè)賦值,最后更新
      //var oldEntity = entities.T_Major.Find(entity.Id);
      //if (oldEntity!=null)
      //{
      //  oldEntity.Name = entity.Name;
      //  entities.SaveChanges();
      //}
      #endregion

      #region 方式二
      //該方式是直接將新的實(shí)體(可能是new出來的并且對主鍵等的屬性賦值好了)附加到上下文,然后標(biāo)記狀態(tài)為修改Modified
      entities.T_Major.Attach(entity);
      entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
      entities.SaveChanges();
      #endregion
      return RedirectToAction("Index");
    }

    // GET: Major/Delete/5
    public ActionResult Delete(int id)
    {
      var major = new EFDbEntities().T_Major.Find(id);
      return View(major);
    }

    // POST: Major/Delete/5
    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
      try
      {
        // TODO: Add delete logic here
        var entities = new EFDbEntities();
        var major = entities.T_Major.Find(id);
        entities.T_Major.Remove(major);
        entities.SaveChanges();
        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }
    }
  }
}

添加專業(yè):

專業(yè)列表:

同樣實(shí)現(xiàn)學(xué)生控制器與視圖:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Zhong.Web.Models;

namespace Zhong.Web.Controllers
{
  public class StudentController : Controller
  {
    private EFDbEntities entities = new EFDbEntities();
    // GET: Student
    public ActionResult Index()
    {
      var students = entities.T_Student.ToList();
      return View(students);
    }

    // GET: Student/Details/5
    public ActionResult Details(int id)
    {
      var student = entities.T_Student.Find(id);
      return View(student);
    }

    // GET: Student/Create
    public ActionResult Create()
    {
      ViewData["MajorId"] = entities.T_Major.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() });
      return View();
    }

    // POST: Student/Create
    [HttpPost]
    public ActionResult Create(T_Student entity)
    {
      entities.T_Student.Add(entity);
      entities.SaveChanges();
      return RedirectToAction("Index");
    }

    // GET: Student/Edit/5
    public ActionResult Edit(int id)
    {
      var student = entities.T_Student.Find(id);
      ViewData["MajorId"] = entities.T_Major.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() });
      return View(student);
    }

    // POST: Student/Edit/5
    [HttpPost]
    public ActionResult Edit(T_Student entity)
    {
      if (entity == null)
      {
        return Content("參數(shù)錯(cuò)誤");
      }
      entities.T_Student.Attach(entity);
      entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
      entities.SaveChanges();
      return RedirectToAction("Index");
    }

    // GET: Student/Delete/5
    public ActionResult Delete(int id)
    {
      var student = entities.T_Student.Find(id);
      return View(student);
    }

    // POST: Student/Delete/5
    [HttpPost]
    public ActionResult Delete(int id, FormCollection collection)
    {
      var student = entities.T_Student.Find(id);
      entities.T_Student.Remove(student);
      entities.SaveChanges();
      return RedirectToAction("Index");
    }
  }
}

添加學(xué)生時(shí),報(bào)錯(cuò)如下:

于是在控制器中增加如下代碼:

刷新頁面:

編輯:

刪除:

列表:

在MajorController中有介紹EF的兩種更新方式。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

错那县| 临沂市| 东乡族自治县| 盱眙县| 天台县| 斗六市| 怀集县| 嘉定区| 乳源| 宜春市| 阿坝| 卢湾区| 布拖县| 兰西县| 石屏县| 锡林郭勒盟| 岱山县| 仙居县| 赣榆县| 方城县| 双牌县| 密山市| 洛隆县| 乳源| 木里| 昌平区| 河曲县| 中超| 乌兰浩特市| 宁陵县| 铁岭县| 洛川县| 轮台县| 东明县| 商城县| 浑源县| 兰考县| 吐鲁番市| 台南县| 小金县| 南阳市|