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框架的情况下,数据库的连接是非常方便和好用的。不过在某些时候,这个框架使用起来也是很麻烦的。
完成了数据库的连接,软件的实现也快要完成了,在下篇博客中,将要对软件进行最后的完成,并进行对软件的功能的使用与测试。