.NET MVC5+EF6简单实现CRUD小案例

本文档详细介绍了如何使用.NET MVC5和Entity Framework 6实现CRUD操作。从创建MVC应用程序开始,逐步讲解编写模型类、创建数据库、安装EF6插件、配置DbContext、新建控制器和视图,直至实现增加、编辑、删除功能。参考了官方文档,适合初学者入门。

这是第一次写博客,只是将自己所学到的东西写下来,写的不好请见谅

使用环境:
VS2015+EF6+SQL Server LocalDB(VS2015自带数据库)

创建一个MVC应用程序

在这里插入图片描述
选择一个空的项目,记得勾上MVC,不进行身份验证,把右边的勾取消
在这里插入图片描述

编写模型类

因为我是打算做一个迷你的用户管理CRUD系统,所以需要创建一个User类,在解决方案资源管理器的Models文件夹下,右击新建类,创建名为User的类,id上面修饰的Key,是为了接下来通过映射直接生成数据库中表方便一些,key代表主键

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace MVC5_CRUD.Models
{
    public class User
    {
        [Key]
        public int id { get; set; }
        public string userName { get; set; }
        public string passWord { get; set; }
    }
}

创建数据库

打开SQL Server对象资源管理器,应该有一个名为MSSQLLocalDB的SQL server,右击数据库新建一个数据库,我新建的名字为MVC5_DB
在这里插入图片描述

安装EF6插件

安装这个插件是为了简单的访问数据库进行CRUD
在这里插入图片描述
在这里插入图片描述

新建与数据库映射的类

在项目下新建一个DB文件夹,新建一个DbContexts的类,添加下面的代码

using MVC5_CRUD.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace MVC5_CRUD.DB
{
    public class DbContexts:DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<User>().ToTable("User");
            //第一个User为引用的类,第二个User为表名
            base.OnModelCreating(modelBuilder);
        }
		public DbSet<User> Users { get; set; }
    }
}

配置 DbContext

在Web.config中配置与数据库的连接,是根目录下的Web.config,不是Views里面的

<connectionStrings>
    <add name="DbContexts" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=MVC5_DB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient" />
  </connectionStrings>

name为之前在DB文件夹创建的类的名字,connectionString可以直接从数据库的详细中获取,选中数据库,右下角有详细的属性,找到连接字符串那一行,将value复制到connectionString即可
在这里插入图片描述

新建控制器

新建一个HomeController.cs的控制器,在对应的文件夹中新建

using MVC5_CRUD.DB;
using MVC5_CRUD.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC5_CRUD.Controllers
{
    public class HomeController : Controller
    {
        DbContexts db = new DbContexts();
        // GET: Home
        public ViewResult Index()
        {
            List<User> userList = db.Users.ToList();
            return View(userList);
        }
    }
}

然后按F5,启动项目,会报错,没事,停止项目,可以打开数据库看看,User表自动生成了
在这里插入图片描述
打开表,填写一两行数据,之后要用

创建视图

在控制器中的Index方法名上,右击添加视图,新建的是强类型视图
在这里插入图片描述
Index.cshtml内容

@using MVC5_CRUD.Models
@model List<User>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <table border="1">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>用户名</th>
                    <th>密码</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                @foreach (User item in Model)
                {
                    <tr>
                        <td>@item.id</td>
                        <td>@item.userName</td>
                        <td>@item.passWord</td>
                        <td><a href="#">编辑</a> | <a href="#">删除</a></td>

                    </tr>
                }

            </tbody>
        </table> 
    </div>
</body>
</html>

启动项目,已经读取到之前填入数据库里面的信息了
在这里插入图片描述

实现增加功能

在控制器中添加新的方法

        [HttpGet]
        public ViewResult insert()
        {
            return View();
        }

创建一个视图
在这里插入图片描述
insert.cshtml视图中写出一个form表单,将username和password通过提交按钮再次传到insert控制器中


@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>insert</title>
</head>
<body>
    <div>
        <form action="/Home/insert" method="post">
            userName:<input type="text" name="userName" /><br />
            passWord:<input type="text" name="passWord" /><br />
            <input type="submit" value="提交" />
        </form>
    </div>
</body>
</html>

在这里插入图片描述
回到控制器中,完善提交按钮之后的数据处理,往下再写一个方法

		[HttpPost]
        public ActionResult insert(User user)
        {
            db.Users.Add(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

该方法实现了增加操作

实现编辑/修改功能

首先要实现表格中的编辑按下去,调到update页面,同时带上id,将该user的内容填充的文本框中(查询功能),之后,要实现点击修改按钮,对数据库相应数据进行修改(修改功能),最后自动返回主页Index
先实现跳转到update页面的操作

<a href="/Home/update/@item.id">编辑</a> 实现首页编辑按钮跳转带id

控制器添加

		 [HttpGet]
		public ViewResult update(int id)
        {
            User user = db.Users.Find(id);
            return View(user);
        }

视图为强类型视图

@model MVC5_CRUD.Models.User

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>update</title>
</head>
<body>
    <div>
        <form action="/Home/update" method="post">
           <input type="hidden" id="id" name="id" value="@Model.id" />
            userName:<input type="text" name="userName" value="@Model.userName"/><br />
            passWord:<input type="text" name="passWord" value="@Model.passWord"/><br />
            <input type="submit" value="修改" />
        </form> 
    </div>
</body>
</html>

在这里插入图片描述
接下来实现update功能——修改按钮
控制器中添加下面这段方法,即可实现update功能,这里使用的取巧的方式,两个方法通用为update,但是通过传递的方式的不同,一个是get、一个是post,浏览器才可以区分出什么时候调用哪一个update

		[HttpPost]
        public ActionResult update(User user)
        {
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }

实现删除功能

实现这个功能,其实和修改中查询模块类似,在控制器添加delete方法

		[HttpGet]
        public ActionResult delete(int id)
        {
            User user = db.Users.Find(id);
            db.Users.Remove(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

表格中的a链接为

<a href="/Home/delete/@item.id">删除</a>

这个案例以上CRUD功能,全部实现,单个查询功能附加在修改模块中,全部查询在首页显示所有数据中实现。

参考文献

这个案例我是参考网上一些方法所写,可能有些跟别人的会重复,其中引用了一篇文章里面的思路,在下面附上网址,有一些是通过这个文章的思路做的

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-basic-crud-functionality-with-the-entity-framework-in-asp-net-mvc-application

转载,请注明文章出处,第一次写的东西,可能有一些错误,请指正,谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值