MVC之排球比赛计分程序 ——(六)使用框架,创建控制器,生成数据库

在上篇博客我们写到,此软件的数据库连接我们使用的是EF框架,code first模式下,通过模型类,在创建controller的时候直接生成数据库,完成数据库的连接,与操作。

在使用EF框架之前,我们需要写好模型类。然后在创建controller。

        此软件目前需要两个模型类,在之前的博客中,我们已经设计,和完成了模型类,这时候我们只需把代码拿过来就可以使用了。这里包括三个类文件:Team.cs, Ju.cs,Score.cs,分别是队伍类、分数类和局次类。具体代码如下:
public class Team

    {

        [Key]

        public int TId { get; set; }

        [Display(Name = "队伍名称")]

        public string TName { get; set; }

        [Display(Name = "结果")]

        public string TResult { get; set; }

        public int TParentId { get; set; }

    }

    public class Ju

    {

        [Key]

        public int JId { get; set; }

 

        [Display(Name = "局次")]

        public string JUCi { get; set; }

        [Display(Name = "比分")]

        public string JScore { get; set; }

        public int TJId { get; set; }

     

 

    }

    public class Score

    {

        [Key]

        public int SId { get; set; }

        [Display(Name = "得分")]

        public int AScore { get; set; }

        [Display(Name = "得分")]

        public int BScore { get; set; }

        [Display(Name = "备注")]

        public string Note { get; set; }

        public int SJId { get; set; }

     

 

    }

    public class CountScoreDBContext : DbContext

    {

        public DbSet<Team> Team { get; set; }

        public DbSet<Ju> Ju { get; set; }

        public DbSet<Score> Score { get; set; }

    }

当完成两个模型类的时候。我们需要对软件进行一下生成,右键单击项目,然后选择生成,不生成后续操作可能会出错。
在完成模型类后,这时候我们就可以通过创建controller 来进行数据库的 连接了。右键单击controller 文件夹,点击添加,添加控制器,控制器名字改写为:TeamController,最终生成的是:

 public class TeamController : Controller
    {
        private CountScoreDBContext db = new CountScoreDBContext();

        //
        // GET: /Team/

        public ActionResult Index()
        {
            return View(db.Team.ToList());
        }

        //
        // GET: /Team/Details/5

        public ActionResult Details(int id = 0)
        {
            Team team = db.Team.Find(id);
            if (team == null)
            {
                return HttpNotFound();
            }
            return View(team);
        }

        //
        // GET: /Team/Create

        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Team/Create

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Team team)
        {
            if (ModelState.IsValid)
            {
                db.Team.Add(team);
                db.SaveChanges();
                return RedirectToAction("Create","Score");
            }

            return View(team);
        }

        //
        // GET: /Team/Edit/5

        public ActionResult Edit(int id = 0)
        {
            Team team = db.Team.Find(id);
            if (team == null)
            {
                return HttpNotFound();
            }
            return View(team);
        }

        //
        // POST: /Team/Edit/5

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Team team)
        {
            if (ModelState.IsValid)
            {
                db.Entry(team).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(team);
        }

        //
        // GET: /Team/Delete/5

        public ActionResult Delete(int id = 0)
        {
            Team team = db.Team.Find(id);
            if (team == null)
            {
                return HttpNotFound();
            }
            return View(team);
        }

        //
        // POST: /Team/Delete/5

        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Team team = db.Team.Find(id);
            db.Team.Remove(team);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }

action方法对应的试图也已经建立完毕。

我们可以清楚的看到系统为我们生成的文件。然后我们可以对这些文件做操作;

相同的,ScoreController,JuController控制器控制器也是一样建立,因为观众界面不涉及到对数据的增删改查,只有一个查询,所以不适用这种方式,手动生成action方法和视图。

SpectatorController具体生成:

 

      到这里,我们就使用EF框架,完成了通过模型类,然后创建controller,进行数据库的连接,与访问。在使用EF框架的情况下,数据库的连接是非常方便和好用的。不过在某些时候,这个框架使用起来也是很麻烦的。

     完成了数据库的连接,软件的实现也快要完成了,在下篇博客中,将要对软件进行最后的完成,并进行对软件的功能的使用与测试。

posted on 2017-06-24 12:54  懒米虫  阅读(142)  评论(0编辑  收藏  举报

导航