通过Microsoft Entity Framework创建模型实体类

来源:互联网 发布:南风七夕捏脸数据 编辑:程序博客网 时间:2024/06/05 22:39

这篇文章教你如何使用MVCMicrosoft Entity Framework;如何使用Entity 向导创建一个ADO.NET 实体数据模型。这篇文章将演示如何构建一个应用程序通过Entity Framework选择、修改和删除数据库中的数据。

Microsoft Entity Framework是一个ORM工具可以帮你根据数据库表自动生成数据访问层,帮你差事少繁琐的工作量。其实这也不是唯一的方法,其它比如使用Microsoft LINQ to SQL,NHibernate 或者SubSonic创建MVC模型实体类。

首先创建一个电影样例子数据库。如下表格所示范区。

列名

数据类型

是否为空

是否是主键

Id

int

False

True

Title

Nvarchar(100)

False

False

Director

Nvarchar(100)

False

False

然后创建ADO.NET实体数据模型。新建一个MVC项目,右键选择Models文件夹,选择添加项,然后选择ADO.NET Entity Data Model。选择模型类别“从数据库生成”然后按照向导建好一个名为ModelTab.edmx的实体数据模型。

HomeController中添加数据库实例代码如下:

namespace MvcApp.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        Models.MovieEntities _db;

 

        public HomeController()

        {            

            _db = new MovieEntities();

        }

 

        public ActionResult Index()

        {           

            ViewData.Model = _db.MovieTable.ToList();

            ViewData["Message"] = "Welcome to ASP.NET MVC!";

 

            return View();

        }

 

        public ActionResult Add()

        {

            return View();

        }

 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Add(FormCollection form)

        {

            var MovieToAdd = new MvcApp.Models.MovieTable();

            TryUpdateModel(MovieToAdd, new string[] { "Id","Title", "Director" }, form.ToValueProvider());

 

            if (string.IsNullOrEmpty(MovieToAdd.Title))

                ModelState.AddModelError("Title-", "Title is request!");

            if (string.IsNullOrEmpty(MovieToAdd.Director))

                ModelState.AddModelError("Director-", "Director is request!");

 

            if (ModelState.IsValid)

            {

                _db.AddToMovieTable(MovieToAdd);

                _db.SaveChanges();

                return RedirectToAction("Index");

            }

 

            return View(MovieToAdd);

        }

 

        public ActionResult Edit(int id)

        {

            // Get movie to update

            var movieToUpdate = _db.MovieTable.First(m => m.Id == id);

 

            ViewData.Model = movieToUpdate;

            return View();

        }

 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(FormCollection form)

        {

            // Get movie to update

            var id = Int32.Parse(form["id"]);

            var movieToUpdate = _db.MovieTable.First(m => m.Id == id);

 

            // Deserialize (Include white list!)

            TryUpdateModel(movieToUpdate, new string[] { "Title", "Director" }, form.ToValueProvider());

 

            // Validate

            if (String.IsNullOrEmpty(movieToUpdate.Title))

                ModelState.AddModelError("Title", "Title is required!");

            if (String.IsNullOrEmpty(movieToUpdate.Director))

                ModelState.AddModelError("Director", "Director is required!");

 

            // If valid, save movie to database

            if (ModelState.IsValid)

            {

                _db.SaveChanges();

                return RedirectToAction("Index");

            }

 

            // Otherwise, reshow form

            return View(movieToUpdate);

        }

 

        public ActionResult Delete(int id)

        {

            // Get movie to delete

            var movieToDelete = _db.MovieTable.First(m => m.Id == id);

 

            // Delete

            _db.DeleteObject(movieToDelete);

            _db.SaveChanges();

 

            // Show Index view

            return RedirectToAction("Index");

        }

 

        public ActionResult About()

        {

           

            return View();

        }

    }

}

 

最后视图中添加Add.aspxEdit.aspx

//--index.aspx添加如下列表

<div>

        <% foreach (var m in ViewData.Model)

   { %>

 

    Title: <%= m.Title %>

    <br />

    Director: <%= m.Director %>

    <br />

    <%= Html.ActionLink("Edit", "Edit", new { id = m.Id })%>

    <%= Html.ActionLink("Delete", "Delete", new { id = m.Id })%>

      

        <hr />

<% } %>

 

 

<%= Html.ActionLink("Add Movie", "Add") %>

   

 

    </div>

 

//---add.aspx添加如下

<form method="post" action="/Home/Add">

     Id:

    <br />

    <%= Html.TextBox("id") %>

 

    Title:

    <br />

    <%= Html.TextBox("title") %>

   

    <br /><br />

    Director:

    <br />

    <%= Html.TextBox("director") %>

   

    <br /><br />

    <input type="submit" value="Add Movie" />

</form>

 

//--Edit.aspx添加如下

<form method="post" action="/Home/Edit">

 

    <!-- Include Hidden Id -->

    <%= Html.Hidden("id") %>

 

    Title:

    <br />

    <%= Html.TextBox("title") %>

   

    <br /><br />

    Director:

    <br />

    <%= Html.TextBox("director") %>

   

    <br /><br />

    <input type="submit" value="Edit Movie" />

</form>

 

这样就完也通过框架自动生成模型实体类来实现select,insert,update,delete操作。

原创粉丝点击