ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元
2021-01-27 18:16
标签:linq == ddd 表数 ret sys 函数 osi 表数据 在之前的泛型仓储模式实现中,每个增删改都调用了SaveChanges方法,导致每次更新都提交了事务。 在实际开发过程中,我们经常遇到同时操作多张表数据,那么按照之前的写法,对数据库提交了多次操作,开启了多事务,不能保证数据的一致性,结合工作单元(UnitOfWork)是为了把多次操作放到同一事务中,要么都成功(Commit),要么都失败(Rollback),保证了数据的一致性。 先把仓储接口中增删改接口无返回(void)值类型,然后去仓储实现类去掉SaveChanges方法,交给UOW统一处理 把SaveChanges抽离出来,定义IUnitOfWork接口 实现IUnitOfWork接口 因为AddDbContext默认生命周期是Scoped,所以用AddScoped注册UOW,确保每次请求共用同一个DbContex对象。 修改UserRepository业务层 遇到多仓储持久化操作时,用构造函数依赖注入相应的仓储即可。 ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元 标签:linq == ddd 表数 ret sys 函数 osi 表数据 原文地址:https://www.cnblogs.com/tenghao510/p/11921501.html 修改仓储类
实现UOW
namespace NetCoreWebApi.Repository
{
///
using System;
using Microsoft.EntityFrameworkCore;
namespace NetCoreWebApi.Repository
{
///
UOW依赖注入
//注入DbContext
services.AddDbContext
使用UOW
using NetCoreWebApi.Model.Models;
using NetCoreWebApi.Repository.Interface;
using NetCoreWebApi.Repository.Repository;
using System.Collections.Generic;
using System.Linq;
namespace NetCoreWebApi.Repository.Implement
{
///
文章标题:ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元
文章链接:http://soscw.com/essay/47872.html