WPF实战项目十(API篇):引入工作单元UnitOfWork

1、通过github地址:https://github.com/arch/UnitOfWork,下载UnitOfWork的代码,将工作单元部分的代码引用到自己的项目,新增UnitOfWork文件夹。

WPF实战项目十(API篇):引入工作单元UnitOfWork_第1张图片

2、在UnitOfWork文件夹下引用UnitOfWork下的IPagedList.cs、PagedList.cs类,WPFProjectAPI项目引用WPFProjectShared项目。

WPF实战项目十(API篇):引入工作单元UnitOfWork_第2张图片

3、然后在program.cs下添加UnitOfWork的服务:

//添加数据库上下文服务
builder.Services.AddDbContext(options =>
{
    string DbConnectionstring = builder.Configuration.GetConnectionString("DbConnectionString");
    options.UseSqlServer(DbConnectionstring);
}).AddUnitOfWork();

4、新建控制器UserController测试下工作单元的使用 ,先新建基础控制器BaseApiController,全局Resful风格代码(详见.Net Core6.0 WebAPI项目框架搭建二:实现Resful风格_痕迹0302的博客-CSDN博客):

[Route("api/[controller]/[action]")]
    [ApiController]
    public class BaseApiController : ControllerBase
    {
    }

 5、UserController 继承BaseApiController,依赖注入IUnitOfWork,新增查询人员、删除人员、添加人员的测试代码:

public class UserController : BaseApiController
    {
        private readonly IUnitOfWork unitOfWork;

        public UserController(IUnitOfWork unitOfWork)
        {
            this.unitOfWork = unitOfWork;
        }

        /// 
        /// 获取人员信息
        /// 
        /// 
        [HttpGet]
        public async Task> GetUserList()
        {
            var res = unitOfWork.GetRepository();
            var list = await res.GetAllAsync();
            return list;

        }
        /// 
        /// 添加人员
        /// 
        /// 
        /// 
        [HttpPost]
        public async Task AddUser(User user)
        {
            var r = await unitOfWork.GetRepository().InsertAsync(user);
                var result = await unitOfWork.SaveChangesAsync();
                if (result > 0)
                {
                    return Ok("添加人员成功!");
                }
                else
                {

                    return BadRequest("添加人员失败!");
                }

        }
        /// 
        /// 删除人员
        /// 
        /// 
        /// 
        [HttpDelete]
        public async Task DeleteUser(int Id)
        {
            var user = await unitOfWork.GetRepository().FindAsync(Id);
            if(user == null)
            {
                return NotFound("没有找到待删除的人员!");
            }
            else
            {
                unitOfWork.GetRepository().Delete(user);
                if(await unitOfWork.SaveChangesAsync() > 0)
                {
                    return Ok($"删除账号:{user.Account}成功!");
                }
                else
                {
                    return BadRequest("删除数据失败!");
                }
            }
        }
        
    }

6、F5运行项目:

WPF实战项目十(API篇):引入工作单元UnitOfWork_第3张图片WPF实战项目十(API篇):引入工作单元UnitOfWork_第4张图片WPF实战项目十(API篇):引入工作单元UnitOfWork_第5张图片WPF实战项目十(API篇):引入工作单元UnitOfWork_第6张图片WPF实战项目十(API篇):引入工作单元UnitOfWork_第7张图片WPF实战项目十(API篇):引入工作单元UnitOfWork_第8张图片

你可能感兴趣的:(WPF,.netcore,wpf,后端,restful,web)