博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC之排球比赛计分程序 ——(六)使用框架,创建控制器,生成数据库
阅读量:5076 次
发布时间:2019-06-12

本文共 3169 字,大约阅读时间需要 10 分钟。

在上篇博客我们写到,此软件的数据库连接我们使用的是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框架的情况下,数据库的连接是非常方便和好用的。不过在某些时候,这个框架使用起来也是很麻烦的。

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

转载于:https://www.cnblogs.com/150902yt/p/7072947.html

你可能感兴趣的文章
Xcode10和iOS12,library not found for -lstdc++.6.0.9,
查看>>
Raid详解
查看>>
c++面试遇到问题
查看>>
jvm 内存参数
查看>>
【转】NDK上建立自己的项目
查看>>
web测试方法总结
查看>>
原生js实现ajax方法
查看>>
关于Win10自带输入法莫名切成繁体
查看>>
php添加gd
查看>>
实训作业1
查看>>
openSUSE12.1安装及基本设置
查看>>
简约的form表单校验插件
查看>>
我读《2017软件测试行业调查报告》
查看>>
Spring 官方教程:使用 Restdocs 创建 API 文档
查看>>
git commit error about 'vi'
查看>>
[翻译] JSAnimatedImagesView
查看>>
[翻译] PNChart
查看>>
asp.net core mvc 中在C# 代码中写 js 或html 文本
查看>>
另一种放大电路
查看>>
如何写代码(转载)
查看>>