MVC +EF 增删改查

设计图:

 

数据库:

use master
go
if exists(select * from sys.databases where name='QU')
drop database QU
create database QU
use QU
create table class
(
classID int not null identity primary key,
classname varchar(10) not null
)
 
create table studentinfo
(
ID int not null identity primary key,
studentname varchar(10) not null,
age int not null,
phone varchar(50) not null,
email varchar(50) not null,
Fk_classID int references class(classID)
)
insert into class values('1班')
insert into class values('2班')
insert into class values('3班')
insert into studentinfo values('木子洋1',12,'12345678901','12345@qq.com',1)
insert into studentinfo values('木子洋2',13,'12345678902','12345@qq.com',2)
insert into studentinfo values('木子洋3',14,'12345678903','12345@qq.com',3)
insert into studentinfo values('木子洋4',15,'12345678904','12345@qq.com',1)
insert into studentinfo values('木子洋5',16,'12345678905','12345@qq.com',2)
select * from studentinfo

 新建一个MVC项目,创建EF框架(代码student这个控制器里面)

写完控制器编写视图:

return view这句话选择view右键——添加视图——

视图名称:可以不修改

模板:查询(list)添加(create)修改(edit)

模型类:选择自己当前操作的实体类(比如我查询用到的实体类是student)

数据上下文类:不选

——点击确定

查询 

需要根据要显示的内容显示在models写一个新的实体类

 public class Student
    {
        public int ID { get; set; }
        public string studentname { get; set; }
        public int age { get; set; }
        public string phone { get; set; }
        public string email { get; set; }
        public Nullable<int> Fk_classID { get; set; }

        public string classname { get; set; }

    }

控制器代码:

   /// <summary>
        /// 列表显示
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            //实例化显示上下文
            QUEntities db = new QUEntities();
            var stu = new Student();
            var model = db.studentinfo .Where(s => true).Select(s => new Student()
            {
                age  = s.age,
                Fk_classID = (int)s.Fk_classID,
                classname = s.@class.classname,
                email = s.email,
                ID = s.ID,
                phone = s.phone,
                studentname = s.studentname,
            }).ToList();
            return View(model);
        
        }
  /// <summary>
        /// 获取学员的班级信息
        /// </summary>
        /// <returns></returns>
        private List<SelectListItem> GetClassInfo()
        {
            //1.实例化数据访问上下文
            using (var db = new QUEntities())
            {
                //2.查询学员班级信息
                //3.构造学员班级信息数据
                var classInfo = db.@class.Where(c => true).Select(c => new SelectListItem
                {
                    Text = c.classname,
                    Value = c.classID.ToString()
                }).ToList();
                return classInfo;

            }
        }

 视图:

@model IEnumerable<WebApplication11.Models.Student>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<h2>学员列表</h2>
<div class="form-group">

    <label for="Name">姓名</label>
    <input style="width:150px;" id="Name" name="Name" type="text">
    <label for="Name">手机</label>
    <input style="width:150px;" id="Name" name="Name" type="text">

    <label for="Name">班级</label>
    <select style="width:150px;height:25px;">
        <option value="value">请选择</option>
    </select>
    <a href="@Url.Action("Add","Student")" class="btn btn-success">查询</a>
</div>
<table class="table">
  
    
            <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>年龄</td>
                <td>手机</td>
                <td>邮箱</td>
                <td>班级</td>
                <td>操作</td>
            </tr>
       
    
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.ID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.studentname)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.age)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.phone)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.email)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.classname)
                </td>
                <td>
                    <a href="@Url.Action("Edit","Student",new {id=item.ID })" class="btn btn-warning" style="margin-right: 10px;">修改</a>
                    <a href="javascript:;" onclick="deleteStudent(@item.ID)" class="btn btn-danger">删除</a>
                </td>
            </tr>
        }
   
</table>
<a href="@Url.Action("Add","Student")" class="btn btn-success">添加</a>

@section Scripts
    {
    <script>
        //删除学员
        function deleteStudent(id) {
            //如果确认删除则进行删除操作
            if (confirm("确定要删除吗?")) {
                //使用Ajax请求删除该记录
                $.post("@Url.Action("Delete","Student")", { Id: id }, function (data) {
                    //如果执行成功则刷新页面重新进行数据绑定
                    if (data.IsSuccess) {
                        location.reload();
                    }
                    else {
                        alert(data.ErrorMessage);
                    }

                }, "json");
            }
        }

    </script>
}




添加

实体类:(studentadd)

   public class studentadd
    {
        public int ID { get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        [DisplayName("姓名")]
        [Required(ErrorMessage = "请输入姓名")]
        [StringLength(4, ErrorMessage = "你的名字太长了,是火星来的么?")]
        public string studentname { get; set; }
        [DisplayName("年龄")]
        [Required(ErrorMessage = "请输入年龄")]
        [Range(0, 130, ErrorMessage = "您寿比南山,打破了吉尼斯记录,你造吗?")]
        [RegularExpression(@"^\d{1,3}$", ErrorMessage = "您输入的格式不正确,请换个姿势再来一次")]
        public int age { get; set; }
        [DisplayName("手机")]
        [Required(ErrorMessage = "请输入手机")]
        [RegularExpression(@"^1[3578]\d{9}$", ErrorMessage = "您输入手机格式比较另类,无法与您取得联系~")]
        public string phone { get; set; }
        [DisplayName("邮箱")]
        [Required(ErrorMessage = "请输入邮箱")]
        [DataType(DataType.EmailAddress, ErrorMessage = "您输入的邮箱格式不正确~")]
        public string email { get; set; }
        /// <summary>
        /// 班级Id
        /// </summary>
        [DisplayName("班级")]
        [Required(ErrorMessage = "请选择班级")]
        public Nullable<int> Fk_classID { get; set; }


    }

 

控制器代码:(下拉框显示在查询里面)

/// <summary>
        /// 添加学员
        /// </summary>
        /// <returns></returns>
        public ActionResult Add()
        {
            var viewModel = new studentadd();
            ViewBag.ClassInfo = GetClassInfo();
            return View(viewModel);
        }

        /// <summary>
        /// 提交添加新学员
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Add(studentadd model)
        {
            //1.模型验证
            if (ModelState.IsValid)
            {
                //2.如果验证通过,写入新数据
                //2.1实例化数据访问上下文
                using (var db = new QUEntities())
                {
                    var entity = new studentinfo()
                    {
                        age  = model.age,
                        Fk_classID = model.Fk_classID,
                        email = model.email,
                        phone = model.phone,
                        studentname = model.studentname
                    };

                    //2.2调用Add方法
                    db.studentinfo.Add(entity);
                    //2.3提交操作
                    db.SaveChanges();
                    ViewBag.Msg = "新学员添加成功!";
                }
            }
            else
            {   //3.如果验证不通过,消息提示
                ModelState.AddModelError("", "您输入的信息有误!");
            }
            ViewBag.ClassInfo = GetClassInfo();
            return View(model);
        }

视图:

@model WebApplication11.Models.studentadd

@using (Html.BeginForm("Add", "Student", FormMethod.Post)) 
{
                @Html.AntiForgeryToken()

                <div class="form-horizontal">
        <h4>添加学员</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.studentname, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.studentname, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.studentname, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.age, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.age, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.age, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.phone, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.phone, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.phone, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.email, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.email, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.email, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Fk_classID, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
      
             
                    @Html.DropDownListFor(model => model.Fk_classID, (List<SelectListItem>)ViewBag.ClassInfo, new { @class = "form-control" })
             
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="添加" class="btn btn-default" />
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <label style="color:red">@ViewBag.Msg</label>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

修改

实体类:(和添加是一个是一个实体类)

控制器:

   #region 修改学员



        /// <summary>
        /// 修改学员
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Edit(int id)
        {
            //1.实例化数据访问上下文
            using (var db = new QUEntities())
            {
                var viewModel = new studentadd();
                //2.根据id查询对应的学员信息
                var student = db.studentinfo.FirstOrDefault(s => s.ID == id);
                if (student != null)
                {
                    //3.构造视图需要的实体
                    viewModel = new studentadd()
                    {
                        age = student.age,
                        Fk_classID = (int)student.Fk_classID,
                        email = student.email,
                        ID = student.ID,
                        phone = student.phone,
                        studentname = student.studentname
                    };
                }

                ViewBag.ClassInfo = GetClassInfo();
                return View(viewModel);
            }
        }

        /// <summary>
        /// 提交学员修改
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Edit(studentadd viewModel)
        {
            //模型验证
            if (ModelState.IsValid)
            {
                //1.实例化数据访问上下文
                using (var db = new QUEntities())
                {
                    //2.查询出当前修改的学员
                    var model = db.studentinfo.FirstOrDefault(s => s.ID  == viewModel.ID);
                    //3.对学员的属性赋值
                    if (model != null)
                    {
                        model.age = viewModel.age;
                        model.Fk_classID = viewModel.Fk_classID;
                        model.email = viewModel.email;
                        model.phone = viewModel.phone;
                        model.studentname = viewModel.studentname;
                        //4.提交操作
                        db.SaveChanges();
                        ViewBag.Msg = "学员信息修改成功!";
                    }

                }
            }
            else
            {
                ModelState.AddModelError("", "您输入的信息有误!");
            }
            ViewBag.ClassInfo = GetClassInfo();
            return View(viewModel);

        }

        #endregion

视图:

@model WebApplication11.Models.studentadd

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>studentadd</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.ID)

        <div class="form-group">
            @Html.LabelFor(model => model.studentname, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.studentname, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.studentname, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.age, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.age, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.age, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.phone, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.phone, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.phone, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.email, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.email, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.email, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Fk_classID, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.Fk_classID, (List<SelectListItem>)ViewBag.ClassInfo, new { @class = "form-control" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="提交修改" class="btn btn-default" />
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <label style="color:red">@ViewBag.Msg</label>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

删除:(ajax)

实体类:(json)

/// <summary>
        /// 返回结果消息json
        /// </summary>
    public class ResultModel
    {
 
            /// <summary>
            /// 是否操作成功
            /// </summary>
            public bool IsSuccess { get; set; }

            /// <summary>
            /// 错误消息提示
            /// </summary>
            public string ErrorMessage { get; set; }
      
    }

控制器:

 /// <summary>
        /// 删除学员
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Delete(int id)
        {
            //1.实例化数据访问上下文
            using (var db = new QUEntities())
            {
                var result = new ResultModel();
                //2.查询当前删除的学员是否存在
                var model = db.studentinfo.FirstOrDefault(s => s.ID == id);
                if (model != null)
                {
                    //3.如果存在则删除
                    //3.1调用Remove方法标记为删除
                    db.studentinfo.Remove(model);
                    //3.2提交操作
                    if (db.SaveChanges() > 0)
                    {
                        result.IsSuccess = true;
                        result.ErrorMessage = "删除成功";
                    }
                    else
                    {
                        result.IsSuccess = false;
                        result.ErrorMessage = "网络繁忙,请稍后重试";
                    }
                }
                else
                {
                    //4.如果不存在则提示错误消息
                    result.IsSuccess = false;
                    result.ErrorMessage = "当前的学员已经删除!";

                }
                return Json(result);
            }

        }

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: ASP.NET MVC是一种基于ASP.NET的Web应用程序框架,它使用模型-视图-控制器(MVC)模式来构建Web应用程序。EF(Entity Framework)是一种ORM(对象关系映射)框架,它可以将数据库中的数据映射到.NET对象中。增删是指对数据库中的数据进行增加、删除、修询操作。在ASP.NET MVC中,可以使用EF来进行数据库操作,实现增删功能。 ### 回答2: ASP.NET MVCEF 是一对强力的开发工具,可以面向对象地开发 Web 应用程序。他们使用的是基于现代软件工程原则的模型-视图控制器模式,也就是MVC。这种模式不仅分离了应用程序的三个核心方面,即用户界面、数据业务逻辑和用户数据,而且还允许多个团队在不干涉彼此的情况下同时开发应用程序。 对于ASP.NET MVC来说,它是一种Web应用程序开发框架,适用于开发具有复杂功能和交互需要的动态Web应用程序。在ASP.NET MVC中,模型-视图-控制器(MVC)模式被广泛使用,以将Web应用程序拆分为三个核心部分:控制器,模型和视图。控制器作为请求接收者,负责处理请求并将响应发送回客户端;视图则负责呈现应用程序的用户界面;而模型则负责管理和检索应用程序的状态和数据。 对于EF来说,它是一种ORM对象关系映射工具,可自动将.NET对象映射为关系数据库中的表、视图和存储过程。使用EF,我们可以通过一个简单的API访问数据库,而不需要复杂的SQL语句。EF支持各种数据库,包括Microsoft SQL Server,Oracle,MySQL和SQLite等。 对于ASP.NET MVCEF增删,我们可以通过以下步骤来实现: 1. 建立数据库连接 在使用EF进行增删之前,我们需要建立数据库连接。在ASP.NET MVC中,我们可以在Web.config文件中配置连接字符串,指定数据库的位置和访问凭据。 2. 创建模型 我们需要创建一个类来定义模型。该类应该包含与数据库表中的列对应的属性。这些属性名称和数据类型应该与数据库中的列对应,以便我们可以将数据从一个位置传递到另一个位置。 3. 创建数据库上下文 我们需要创建一个EF数据库上下文,该上下文负责管理数据库连接和数据操作。我们可以在该上下文中创建插入、更新、删除和询方法。 4. 插入数据 我们可以通过在数据库上下文中创建一个新对象并将其添加到数据库上下文中来插入数据。保存更后,这些更将通过EF发送到数据库。 5. 更新数据 要更新数据,我们可以在数据库上下文中询现有对象,并更其属性。一旦更完成,我们可以保存更并将更提交到数据库。 6. 删除数据 要删除数据,我们可以在数据库上下文中询现有对象,并调用删除操作。一旦删除完成,我们可以保存更并将更提交到数据库。 7. 询数据 要询数据,我们可以使用数据库上下文来执行LINQ询。LINQ询可用于检索数据,并通过视图将数据呈现给用户。 综上所述,我们可以看出ASP.NET MVCEF是一对非常强大的应用程序开发工具,可以帮助我们构建复杂的Web应用程序,并为我们提供了一种简单而直观的方法来管理数据库操作。在项目中应用它们,可以极大地提高我们的开发效率,提高生产力。 ### 回答3: ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller, MVC)架构设计的Web应用程序框架。该框架使用MVC设计模式,将应用程序分为几个不同的组件,这些组件分别处理不同方面的应用程序逻辑。 Entity Framework(EF)是一种对象关系映射(Object-Relational Mapping, ORM)框架,用于将数据库中的表格数据映射到.NET对象中。它允许开发人员通过使用.NET语言(如C#和VB.NET)来编写应用程序,而不必直接处理SQL代码。 在ASP.NET MVC应用程序中使用EF可以简化数据访问层的开发过程,并为应用程序提供数据持久化解决方案。下面将介绍如何在ASP.NET MVC中完成增删方法: 增加数据: 应用程序需要将表格的数据添加到数据库,可以通过以下几个步骤来完成添加数据的方法: 1、在模型中定义一个实体,该实体将表示您要添加到表中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中创建一个新的实体,将数据从请求参数分配给该实体的属性。 4、将新实体添加到EF上下文并保存更。 删除数据: 应用程序需要从一个表中删除数据,可以通过以下几个步骤来完成删除数据的方法: 1、在控制器中创建一个方法,该方法接受一个参数,该参数是表格中的数据的唯一标识符。 2、在方法中使用EF找需要删除的实体,并从 EF上下文中删除实体。 3、将更保存到数据库。 更新数据: 应用程序需要更新表格中的数据,可以通过以下几个步骤来完成更新数据的方法: 1、在模型中定义一个实体,该实体将表示您要更新表格中的数据。 2、在控制器中创建一个方法,该方法接受一个参数,该参数是从HTTP POST请求中发送到服务器的实体。 3、在方法中使用EF找需要更新的实体。 4、将传入的实体的属性复制到EF找到的实体中。 5、将更保存到数据库。 询数据: 应用程序需要从一个表中检索数据,可以通过以下几个步骤来完成询数据的方法: 1、在控制器中创建一个方法,该方法将返回从数据库检索到的实体。 2、在方法中使用EF执行一个询,以从表中检索数据。 3、返回从DB检索到的实体。 综上所述,使用ASP.NET MVCEF可以轻松地完成最常用的数据库操作,增加、删除、修询数据。此外,这些操作的执行效率也很高,可以为开发者节省大量的时间和精力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值