ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查

时间:2021-06-22 15:35:18

系列目录

前言

为了符合后面更新后的重构系统,文章于2016-11-1日重写

回顾上一节的解决方案,我们看出了解决方案中类库的关系

这里要说明一点MVC!=三层

他们大约是这样的一种关系

ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查

代码实现

上一节我们在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() > ;
}
} /// <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()
{ }
}
}

DAL层-SysSampleRepository

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);
}
}

IDAL层-ISysSampleRepository

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);
}
}

ISysSampleBLL

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) == )
{
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) == )
{
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) == )
{
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);
}
}
}

SysSampleBLL

@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>

Index.cshtml

我们往数据库插入几条记录这时你应该看到效果了

ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查