EF后台

第一步:打开VS软件,新建项目,创建MVC

第二步:导入CSS,JS,页面模板

第三步:运行模板,看看是否正常,有错修改,无错继续

第四步:创建类

1.实体类

新建一个实体类库,在类库里添加ADO.NET实体模型将数据库里的表转换为实体类,然后在程序包管理里面安装EntityFramework包。

Create database Test;
use Test;
create table Login(
Id [int] IDENTITY(1,1) NOT NULL,
UserName varchar(50),
UserPass varchar(50),
LoginTime datetime)
 

create table Functon(
[Id] [int] IDENTITY(1,1) NOT NULL,
	[MenuId] [int] NULL,
	[Name] [varchar](50) NULL,
	[ControllerName] [varchar](50) NULL,
	[ActionName] [varchar](50) NULL,
	[FunctionCode] [varchar](50) NULL,
	[Remark] [varchar](200) NULL,)

2.数据访问层

建一个数据访问层类库,在类库里添加EF 6.x DbContext生成器,然后再将Test.tt里面的内容替换成T4模板的内容,再将T4模板里的路径和引用改成这个项目的路径和引用就行了,然后保存就能生成数据访问层,再在数据库访问层类库添加一个基类和唯一获取实例类

3.业务逻辑层

建一个业务层类库,然后再类库里添加一个基类,添加数据访问层的引用。代码如下:

public class BaseService<T> where T : class
    {
        private BaseRepository<T, TestEntities> baseRepository = new BaseRepository<T,TestEntities>();
 
        #region 添加
        /// <summary>
        /// 单表添加一条记录
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual bool Add(T entity)
        {
            return baseRepository.Add(entity);
        }
        /// <summary>
        /// 单表的添加多条记录
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual bool AddRange(List<T> entity)
        {
            return baseRepository.AddRange(entity);
        }
        #endregion
 
        #region 修改
        /// <summary>
        /// 单表的修改数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual bool Update(T entity)
        {
            return baseRepository.Update(entity);
        }
        #endregion
 
        #region 删除
        /// <summary>
        /// 单表的删除数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual bool Delete(T entity)
        {
            return baseRepository.Delete(entity);
        }
        /// <summary>
        /// 删除多个数据
        /// </summary>
        /// <param name="entities"></param>
        /// <returns></returns>
        public virtual bool BactchDelete(List<T> entities)
        {
            return baseRepository.BactchDelete(entities);
        }
        /// <summary>
        /// 根据id删除多个实体
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public virtual bool BactchDelete(params int[] ids)
        {
            return baseRepository.BactchDelete(ids);
        }
        #endregion
 
        #region 查询
        /// <summary>
        /// 查询返回一个集合
        /// </summary>
        /// <param name="lambdaExpression"></param>
        /// <returns></returns>
        public virtual List<T> QueryList(Expression<Func<T, bool>> lambdaExpression)
        {
            return baseRepository.QueryList(lambdaExpression);
        }
        /// <summary>
        /// 查询返回一个对象,没有返回null
        /// </summary>
        /// <param name="lambdaExpression"></param>
        /// <returns></returns>
        public virtual T Query(Expression<Func<T, bool>> lambdaExpression)
        {
            return baseRepository.Query(lambdaExpression);
        }
        /// <summary>
        /// 判断是否存在
        /// </summary>
        /// <param name="lambdaExpression"></param>
        /// <returns></returns>
        public virtual bool QueryExists(Expression<Func<T, bool>> lambdaExpression)
        {
            return baseRepository.QueryExists(lambdaExpression);
        }
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <typeparam name="S"></typeparam>
        /// <param name="pageIndex">分页下标</param>
        /// <param name="pageSize">每页行数</param>
        /// <param name="whereLambda">查询条件</param>
        /// <param name="orderbyLambda">排序条件</param>
        /// <param name="count">查询到的数据总数</param>
        /// <param name="isAsc">判断排序方式</param>
        /// <returns></returns>
        public virtual List<T> QueryPageList<S>(int pageIndex, int pageSize, Expression<Func<T, bool>> whereLambda, Expression<Func<T, S>> orderbyLambda, out int count, bool isAsc = true)
        {
            return baseRepository.QueryPageList(pageIndex, pageSize, whereLambda, orderbyLambda, out count, isAsc);
        }
        #endregion
 
    }

登录类LoginService:

//继承数据访问里的基类
public class LoginService:BaseService<Login>
    {
}

功能类: 

public class FunctionService : BaseService<Functon>
    {
 
    }

第五步:

1.登录控制器,添加业务层和实体层的引用:

实现登录:

如果记住密码调用第一个方法,如果不记住密码调用第二个方法。

//创建业务层对象
        private LoginService loginService = new LoginService();
        /// <summary>
        ///登录(记住密码)
        /// </summary>
        /// <param name="login"></param>
        /// <returns></returns>
        public JsonResult Login(Login login)
        {
            Operate operate = new Operate();
            Expression<Func<Login, bool>> pwdname = a => a.UserName.Equals(login.UserName) && a.UserPass.Equals(login.UserPass);
            operate.Success = loginService.QueryExists(pwdname);
            if (operate.Success)
            {
               
                    UserContext.User.UserInfo = login;
                    //创建cookie对象
                    HttpCookie cookie = new HttpCookie("LoginName");
 
                    cookie.Values.Add("username", login.UserName);
                    cookie.Values.Add("time", DateTime.Now.AddDays(7).ToString("yyyy-MM-dd HH:mm:ss"));
                    //设置过期时间
                    cookie.Expires = DateTime.Now.AddDays(7);
                    //添加到
                    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                }
            return Json(operate);
        }
 
/// <summary>
        ///登录(不记住密码)
        /// </summary>
        /// <param name="login"></param>
        /// <returns></returns>
public JsonResult Logins(Login login)
        {
            Operate operate = new Operate();
            Expression<Func<Login, bool>> pwdname = a => a.UserName.Equals(login.UserName) && a.UserPass.Equals(login.UserPass);
            operate.Success = loginService.QueryExists(pwdname);
          
            return Json(operate);
        }

2.

然后在HomeController控制器里的Index方法写如下代码:


public ActionResult Index()
        {
            HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies.Get("LoginName");
            if (cookie != null)
            {
                if (cookie.Values.Get("username") != null && cookie.Values.Get("time") != null)
                {
                    string username = cookie.Values.Get("username");
                    DateTime dateTime = DateTime.Parse(cookie.Values.Get("time"));
                    if (DateTime.Now < dateTime)
                    {
                        ViewBag.username = username;
                    }
                }
            }
            return View();
        }

3.

实现列表和增删改:

///创建业务层对象
 private FunctionService functionService = new FunctionService();
/// <summary>
        /// 添加功能
        /// </summary>
        /// <param name="function"></param>
        /// <returns></returns>
        public JsonResult AddFunction(Functon function)
        {
            Operate operateResult = new Operate();
            operateResult.Success = functionService.Add(function);
            return Json(operateResult);
        }
///列表
        public JsonResult PageFunction(int page, int limit)
        {
            PageListResult<Functon> pageList = new PageListResult<Functon>();
            pageList.code = 0;
            pageList.msg = string.Empty;
            int count = 0;
            List<Functon> loginInfos = new List<Functon>();
 
            Expression<Func<Functon, bool>> whereLambda = a => a.Id != 0;
            Expression<Func<Functon, int>> orderbyLambda = c => c.Id;
            pageList.data = functionService.QueryPageList(page, limit, whereLambda, orderbyLambda, out count);
            pageList.count = count;
            return Json(pageList, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// 判断功能名是否存在
        /// </summary>
        /// <param name="function"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public JsonResult IsFunction(Functon function, string name)
        {
            Operate operateResult = new Operate();
            Expression<Func<Functon, bool>> lambdaExpression = a => a.Name == name;
            operateResult.Success = functionService.QueryExists(lambdaExpression);
            return Json(operateResult);
        }
        /// <summary>
        /// 编辑
        /// </summary>
        /// <param name="function"></param>
        /// <returns></returns>
        public JsonResult UpdateFunction(Functon function, int id)
        {
            Operate operateResult = new Operate();
            operateResult.Success = functionService.Update(function);
            return Json(operateResult);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="function"></param>
        /// <returns></returns>
        public JsonResult DelFunction(Functon function, int id)
        {
            Operate operateResult = new Operate();
            operateResult.Success = functionService.Delete(function);
            return Json(operateResult);
        }

第六步:

1.在页面上实现登录和记住密码:

$(function () {
        $("#login_btn").click(function () {
            var data = {};
            //登录名
            data.UserName = $("#username").val();
            //登录密码
            data.UserPass = $("#userpwd").val();
            //是否记住密码
            if ($("#savepwd").prop("checked")) {
                $.ajax({
                    url: "/Login/Login",
                    type: "post",
                    data: data,
                    success: function (result) {
                        if (result.Success) {
                            alert("登陆成功!");
                            //登录成功则跳转主页
                            location.href = "/Home/Index";
                            layer.close(index);
                        }
                        else {
                            alert("登陆失败!");
                        }
                    }
                });
            } else {
                $.ajax({
                    url: "/Login/Logins",
                    type: "post",
                    data: data,
                    success: function (result) {
                        if (result.Success) {
                            alert("登陆成功!");
                            //登录成功则跳转主页
                            location.href = "/Home/Index";
                            layer.close(index);
                        }
                        else {
                            alert("登陆失败!");
                        }
                    }
                });
            }
        })
    })

2.实现列表和增删改:

<table class="layui-hide" id="test" lay-filter="demo"></table>
 
        <script src="~/layui/layui.js" charset="utf-8"></script>
        <script>
            layui.use('table', function () {
                var table = layui.table;
                table.render({
                    elem: '#test'
                    , url: '/Login/PageFunction'
                    , cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
                    , cols: [[
                        { type: 'checkbox' }
                        , { field: 'Id', title: 'ID', width: 100, fixed: 'left', sort: true }
                        , { field: 'MenuId', title: '菜单Id', width: 120 }
                        , { field: 'Name', title: '功能名称', width: 120 }
                        , { field: 'ControllerName', title: '控制器名称', width: 150 }
                        , { field: 'ActionName', title: '方法名称', width: 150 }
                        , { field: 'FunctionCode', title: '功能编码', width: 150 }
                        , { field: 'Remark', title: '备注', width: 150 }
                        , { fixed: 'right', title: '操作', toolbar: '#barDemo', width: 150 }
                    ]]
                    , page: true
                });
                //监听行工具事件
                table.on('tool(demo)', function (obj) {
                    var data = obj.data;
 
                    //console.log(obj)
                    if (obj.event === 'del') {
                        var id = data.Id;
 
                        $.ajax({
                            type: "post",
                            url: "/Login/DelFunction?id=" + id,
                            success: function (result) {
                                if (result.Success) {
                                    layer.msg('删除成功!', { icon: 6, time: 1000 });
                                    obj.del();
                                    layer.close(index);
                                } else {
                                    layer.msg('删除失败!', { icon: 6, time: 1000 });
                                }
                            }
                        });
                    } else if (obj.event === 'edit') {
                        layer.open({
                            type: 1,
                            title: '编辑功能',
                            area: ['700px', ''],
                            shadeClose: false,
                            content: $('#update_administrator_style'),
                        });
                        $("#Menu").val(data.MenuId);
                        $("#Name").val(data.Name);
                        $("#Contro").val(data.ControllerName);
                        $("#Action").val(data.ActionName);
                        $("#Code").val(data.FunctionCode);
                        $("#Remark").val(data.Remark);
                       $("#btn").click(function () {
                            var data2 = {};
                            data2.MenuId = $("#Menu").val();
                            data2.Name = $("#Name").val();
                            data2.ControllerName = $("#Contro").val();
                            data2.ActionName = $("#Action").val();
                            data2.FunctionCode = $("#Code").val();
                           data2.Remark = $("#Remark").val();
                           var id = data.Id;
                            $.ajax({
                                type: "post",
                                url: "/Login/UpdateFunction?id=" + id,
                                data:data2,
                                success: function (operateResult) {
                                    if (operateResult.Success) {
                                        layer.msg('编辑成功!', { icon: 6, time: 1000 });
                                        location.reload();//刷新页面
                                    } else {
                                        layer.msg('编辑失败!', { icon: 6, time: 1000 });
                                    }
                                }
                            })
                        })
                    }
                });
            });
        </script>
        <script type="text/html" id="barDemo">
            <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
        </script>
 //添加功能
                $("#Submit").click(function () {
                    var data = {};
                    data.MenuId = $("#menu").val();
                    data.Name = $("#name").val();
                    data.ControllerName = $("#contro").val();
                    data.ActionName = $("#action").val();
                    data.FunctionCode = $("#code").val();
                    data.Remark = $("#remark").val();
                    var name = data.Name;
                    $.ajax({
                        type: "post",
                        url: "/Login/IsFunction?name="+name,
                        data: data,
                        success: function (result) {
                            if (result.Success) {
                                layer.msg('此用户已存在,不能添加!', { icon: 6, time: 1000 });
                            } else {
                                $.ajax({
                                    type: "post",
                                    url: "/Login/AddFunction",
                                    data: data,
                                    success: function (result) {
                                        if (result.Success) {
                                            layer.msg('添加成功!', { icon: 6, time: 1000 });
                                            location.reload();//刷新页面
                                        } else {
                                            layer.msg('添加失败!', { icon: 6, time: 1000 });
                                        }
                                    }
                                })
                            }
                        }
                        })
                })

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值