ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查
前言
为了符合后面更新后的重构系统,文章于2016-11-1日重写
回顾上一节的解决方案,我们看出了解决方案中类库的关系
这里要说明一点MVC!=三层
他们大约是这样的一种关系
代码实现
上一节我们在EF添加了一个实体,这次我们来看看怎么操作这个实体,下面我们创建IDAL,DAL,IBLL,BLL的代码:
新建一个SysSampleController的控制器:不需要写什么代码,系统自动生成Index方法:分别在各层添加下列代码:
using System; using System.Linq; using Apps.IDAL; using Apps.Models; using System.Data; namespace Apps.DAL { public class SysSampleRepository : ISysSampleRepository, IDisposable { /// <summary> /// 获取列表 /// </summary> /// <param name="db">数据库上下文</param> /// <returns>数据列表</returns> public IQueryable<SysSample>GetList(DBContainer db) { IQueryable<SysSample> list = db.SysSample.AsQueryable(); return list; } /// <summary> /// 创建一个实体 /// </summary> /// <param name="db">数据库上下文</param> /// <param name="entity">实体</param> public int Create(SysSample entity) { using (DBContainer db = new DBContainer()) { db.Set<SysSample>().Add(entity); return db.SaveChanges(); } } /// <summary> /// 删除一个实体 /// </summary> /// <param name="db">数据库上下文</param> /// <param name="entity">主键ID</param> public int Delete(string id) { using (DBContainer db = new DBContainer()) { SysSample entity = db.SysSample.SingleOrDefault(a => a.Id == id); db.Set<SysSample>().Remove(entity); return db.SaveChanges() > 0; } } /// <summary> /// 修改一个实体 /// </summary> /// <param name="db">数据库上下文</param> /// <param name="entity">实体</param> public int Edit(SysSample entity) { using (DBContainer db = new DBContainer()) { db.Set<entity>().Attach(entity); db.Entry<SysSample>(entity).State = EntityState.Modified; return db.SaveChanges(); } } /// <summary> /// 获得一个实体 /// </summary> /// <param name="id">id</param> /// <returns>实体</returns> public SysSample GetById(string id) { using (DBContainer db = new DBContainer()) { return db.SysSample.SingleOrDefault(a => a.Id == id); } } /// <summary> /// 判断一个实体是否存在 /// </summary> /// <param name="id">id</param> /// <returns>是否存在 true or false</returns> public bool IsExist(string id) { using (DBContainer db = new DBContainer()) { SysSample entity = GetById(id); if (entity != null) return true; return false; } } public void Dispose() { } } }
using Apps.Models; using System.Linq; namespace Apps.IDAL { public interface ISysSampleRepository { /// <summary> /// 获取列表 /// </summary> /// <param name="db">数据库上下文</param> /// <returns>数据列表</returns> IQueryable<SysSample> GetList(DBContainer db); /// <summary> /// 创建一个实体 /// </summary> /// <param name="entity">实体</param> int Create(SysSample entity); /// <summary> /// 删除一个实体 /// </summary> /// <param name="entity">主键ID</param> int Delete(string id); /// <summary> /// 修改一个实体 /// </summary> /// <param name="entity">实体</param> int Edit(SysSample entity); /// <summary> /// 获得一个实体 /// </summary> /// <param name="id">id</param> /// <returns>实体</returns> SysSample GetById(string id); /// <summary> /// 判断一个实体是否存在 /// </summary> bool IsExist(string id); } }
using System.Collections.Generic; using App.Common; using App.Models.Sys; namespace App.IBLL { public interface ISysSampleBLL { /// <summary> /// 获取列表 /// </summary> /// <param name="pager">JQgrid分页</param> /// <param name="queryStr">搜索条件</param> /// <returns>列表</returns> List<SysSampleModel> GetList(ref GridPager pager, string queryStr); /// <summary> /// 创建一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="model">模型</param> /// <returns>是否成功</returns> bool Create(ref ValidationErrors errors, SysSampleModel model); /// <summary> /// 删除一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="id">id</param> /// <returns>是否成功</returns> bool Delete(ref ValidationErrors errors, string id); /// <summary> /// 删除多个实体,中断将回滚 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="deleteCollection">主键数组集合</param> /// <returns>是否成功</returns> bool Delete(ref ValidationErrors errors, string[] deleteCollection); /// <summary> /// 修改一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="model">模型</param> /// <returns>是否成功</returns> bool Edit(ref ValidationErrors errors, SysSampleModel model); /// <summary> /// 根据ID获得一个Model实体 /// </summary> /// <param name="id">id</param> /// <returns>Model实体</returns> SysSampleModel GetById(string id); /// <summary> /// 判断是否存在实体 /// </summary> /// <param name="id">主键ID</param> /// <returns>是否存在</returns> bool IsExist(string id); } }
using System; using System.Collections.Generic; using System.Linq; using Apps.Models; using Apps.Common; using Apps.IBLL; using Apps.IDAL; using Apps.DAL; namespace Apps.BLL { public class SysSampleBLL :ISysSampleBLL { DBContainer db = new DBContainer(); ISysSampleRepository Rep = new SysSampleRepository(); /// <summary> /// 获取列表 /// </summary> /// <param name="pager">JQgrid分页</param> /// <param name="queryStr">搜索条件</param> /// <returns>列表</returns> public List<SysSample> GetList(string queryStr) { IQueryable<SysSample> queryData =Rep.GetList(db); return queryData.ToList(); } /// <summary> /// 创建一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="model">模型</param> /// <returns>是否成功</returns> public bool Create(SysSample entity) { try { if (Rep.Create(entity) == 1) { return true; } else { return false; } } catch (Exception ex) { //ExceptionHander.WriteException(ex); return false; } } /// <summary> /// 删除一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="id">id</param> /// <returns>是否成功</returns> public bool Delete(string id) { try { if (Rep.Delete(id) == 1) { return true; } else { return false; } } catch (Exception ex) { //ExceptionHander.WriteException(ex); return false; } } /// <summary> /// 修改一个实体 /// </summary> /// <param name="errors">持久的错误信息</param> /// <param name="model">模型</param> /// <returns>是否成功</returns> public bool Edit(SysSample entity) { try { if (Rep.Edit(entity) == 1) { return true; } else { return false; } } catch (Exception ex) { //ExceptionHander.WriteException(ex); return false; } } /// <summary> /// 判断是否存在实体 /// </summary> /// <param name="id">主键ID</param> /// <returns>是否存在</returns> public bool IsExists(string id) { if (db.SysSample.SingleOrDefault(a => a.Id == id) != null) { return true; } return false; } /// <summary> /// 根据ID获得一个实体 /// </summary> /// <param name="id">id</param> /// <returns>实体</returns> public SysSample GetById(string id) { if (IsExist(id)) { SysSample entity = Rep.GetById(id); return entity; } else { return null; } } /// <summary> /// 判断一个实体是否存在 /// </summary> /// <param name="id">id</param> /// <returns>是否存在 true or false</returns> public bool IsExist(string id) { return Rep.IsExist(id); } } }
@model IEnumerable<App.Models.SysSample> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th> @Html.DisplayNameFor(model => model.Name) </th> <th> @Html.DisplayNameFor(model => model.Age) </th> <th> @Html.DisplayNameFor(model => model.Bir) </th> <th> @Html.DisplayNameFor(model => model.Photo) </th> <th> @Html.DisplayNameFor(model => model.Note) </th> <th> @Html.DisplayNameFor(model => model.CreateTime) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.Age) </td> <td> @Html.DisplayFor(modelItem => item.Bir) </td> <td> @Html.DisplayFor(modelItem => item.Photo) </td> <td> @Html.DisplayFor(modelItem => item.Note) </td> <td> @Html.DisplayFor(modelItem => item.CreateTime) </td> <td> @Html.ActionLink("Edit", "Edit", new { id=item.Id }) | @Html.ActionLink("Details", "Details", new { id=item.Id }) | @Html.ActionLink("Delete", "Delete", new { id=item.Id }) </td> </tr> } </table> </body> </html>
我们往数据库插入几条记录这时你应该看到效果了
作者:YmNets
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。