EntityFramework和MVC3实现增删查改

1.在Models添加Movie类

namespace MyMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        [Required(ErrorMessage = "必须输入标题")]
        public string Title { get; set; }
        [Required(ErrorMessage = "必须输入日期")]
        public DateTime ReleaseDate { get; set; }
        [Required(ErrorMessage = "必须指定种类")]
        public string Genre { get; set; }
        [Required(ErrorMessage = "必须输入票价")]
        [Range(1, 100, ErrorMessage = "票价必须在1到100元之间")]
        public decimal Price { get; set; }
        [StringLength(5, ErrorMessage = "最多输入五个字符")]
        public string Rating { get; set; }
    }
    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
        /// <summary>
        /// OnModelCreating方法可以被用来重载与定制规定我们的模型类
        /// 如何与我们的数据表进行映射的映射规则。
        /// 代码中使用了EF的ModelBuilder API来定义我们的Movie对象
        /// 的票价(Price)字段的精度为准确到小数点后两位。
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Movie>().Property(p => p.Price).HasPrecision(18,2);
        }
    }
}

 

2.在Models中添加MovieIntializer类

namespace MyMovie.Models
{
    public class MovieIntializer : DropCreateDatabaseIfModelChanges<MovieDBContext>
    {
        protected override void Seed(MovieDBContext context)
        {
            var movies = new List<Movie>
        {
            new Movie{Title="非诚勿扰2",ReleaseDate=DateTime.Parse("2011-1-11"),Genre="爱情",Rating="R",Price=7.00M},
            new Movie{Title="赵氏孤儿",ReleaseDate=DateTime.Parse("2011-2-23"),Genre="历史",Rating="R",Price=9.00M},
        };
            movies.ForEach(d => context.Movies.Add(d));
        }

    }
}

 

3. 在Controllers中添加MoviesController

public class MoviesController : Controller
    {
        //
        // GET: /Movies/
        MovieDBContext db = new MovieDBContext();
        public ActionResult Index()
        {
            var movies = from m in db.Movies
                         where
                             m.ReleaseDate > new DateTime(1984, 6, 1)
                         select m;
            return View(movies.ToList());
        }
        public ActionResult Create()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Create(Movie newMovie)
        {
            if (ModelState.IsValid)
            {
                db.Movies.Add(newMovie);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            else
                return View(newMovie);
        }
        public ActionResult Details(int id)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
                return RedirectToAction("Index");
            return View("Details",movie);
        }
        public ActionResult Edit(int id)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
                return RedirectToAction("Index");
            return View(movie);
        }
        [HttpPost]
        public ActionResult Edit(Movie model)
        {
            try
            {
                var movie = db.Movies.Find(model.ID);
                UpdateModel(movie);
                db.SaveChanges();
                return RedirectToAction("Details", new { id=model.ID});
            }
            catch (Exception)
            {

                ModelState.AddModelError("","修改失败");
            }
            return View(model);
        }
        public ActionResult Delete(int id)
        {
            Movie movie = db.Movies.Find(id);
            if (movie == null)
                return RedirectToAction("Index");
            return View(movie);
        }
        [HttpPost]
        public RedirectToRouteResult Delete(int id, FormCollection collection)
        {
            var movie = db.Movies.Find(id);
            db.Movies.Remove(movie);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

    }

 

4.右键添加视图类

5.修改Web.config

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
    <add name="MovieDBContext"
        connectionString="data source=.;Integrated Security=SSPI;initial catalog=MovieDB;"
   providerName="System.Data.SqlClient"/>
  </connectionStrings>

 

6.修改Global.asax

      protected void Application_Start()
        {
            // 重新添加数据库
         //   Database.SetInitializer<MovieDBContext>(new MovieIntializer());
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

 

源码链接:https://files.cnblogs.com/byzy/MyMovie.rar

posted @ 2012-10-28 13:16  bradleydan  阅读(188)  评论(0)    收藏  举报