在上篇博客我们写到,此软件的数据库连接我们使用的是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/5public ActionResult Details(int id = 0)
{ Team team = db.Team.Find(id); if (team == null) { return HttpNotFound(); } return View(team); }//
// GET: /Team/Createpublic 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/5public 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/5public 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框架的情况下,数据库的连接是非常方便和好用的。不过在某些时候,这个框架使用起来也是很麻烦的。
完成了数据库的连接,软件的实现也快要完成了,在下篇博客中,将要对软件进行最后的完成,并进行对软件的功能的使用与测试。