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

这篇文章教你如何使用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操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值