MVC5学习系列——添加模型(Model)、链接字符串

         MVC5学习笔记,其实就是敲了一遍官网代码,官网地址:http://www.asp.net/mvc  

         接着上一篇MVC5学习系列——添加视图,这次我们添加模型(Model)。

MVC5学习系列——添加模型(Model)、链接字符串_第1张图片

MVC5学习系列——添加模型(Model)、链接字符串_第2张图片

我们给Movie类添加几个属性:

public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
紧接着我们在Models中在创建一个类:MVC5TestDBContext.cs

public class MVC5TestDBContext : DbContext
    {
        public DbSet Movies { get; set; }
    }
我们发现下面的问题:

MVC5学习系列——添加模型(Model)、链接字符串_第3张图片
我晕了,竟然没有找到。按照官网提示添加   using System.Data.Entity;  还是不行;就算添加System.Data.Entity 引用,还是不行:
最后发现问题在这里,

MVC5学习系列——添加模型(Model)、链接字符串_第4张图片

MVC5学习系列——添加模型(Model)、链接字符串_第5张图片

赶紧安装啊!安装成功之后:

MVC5学习系列——添加模型(Model)、链接字符串_第6张图片

MVC5学习系列——添加模型(Model)、链接字符串_第7张图片

终于有了,快点添加吧!

我们再看看Web.config中的变化,之前:




  
    
    
    
    
  
  
    
    
  
  
    
      
        
        
      
      
        
        
      
      
        
        
      
    
  
  
    
      
      
    
  
之后:




  
    
    
接下来,我们创建Movie控制器:
MVC5学习系列——添加模型(Model)、链接字符串_第8张图片
MVC5学习系列——添加模型(Model)、链接字符串_第9张图片
MVC5学习系列——添加模型(Model)、链接字符串_第10张图片
MVC5学习系列——添加模型(Model)、链接字符串_第11张图片
哈哈,要先重新生成一下,在进行上述操作,添加成功之后如下图:
MVC5学习系列——添加模型(Model)、链接字符串_第12张图片

看一下MovieController.cs自动生成的代码:

public class MoviesController : Controller
    {
        private MVC5TestDBContext db = new MVC5TestDBContext();

        // GET: Movies
        public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

        // GET: Movies/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

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

        // POST: Movies/Create
        // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 
        // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "ID,Title,ReleaseDate,Genre,Price")] Movie movie)
        {
            if (ModelState.IsValid)
            {
                db.Movies.Add(movie);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(movie);
        }

        // GET: Movies/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

        // POST: Movies/Edit/5
        // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 
        // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "ID,Title,ReleaseDate,Genre,Price")] Movie movie)
        {
            if (ModelState.IsValid)
            {
                db.Entry(movie).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(movie);
        }

        // GET: Movies/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Movie movie = db.Movies.Find(id);
            if (movie == null)
            {
                return HttpNotFound();
            }
            return View(movie);
        }

        // POST: Movies/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Movie movie = db.Movies.Find(id);
            db.Movies.Remove(movie);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

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

我们先修改一下默认路由:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Movies", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
调试如下:

MVC5学习系列——添加模型(Model)、链接字符串_第13张图片
又出错了,对了,忘了添加Connection String字符串了:

 
    
  
再次调试,如下图:

MVC5学习系列——添加模型(Model)、链接字符串_第14张图片
终于成功了!

在调试之前,我是没有添加MVC5TestDB数据库的。但是为什么能成功呢!

MVC5学习系列——添加模型(Model)、链接字符串_第15张图片

这就是传说中的代码有限吧!Code First。这篇就写到这里了。谢谢!



你可能感兴趣的:(MVC学习系列)