添加事务、完善注释
This commit is contained in:
@@ -154,6 +154,11 @@ WebFirst开发:所有代码生成器已经配置完成,无需任何操作数
|
|||||||
没了,恭喜你已经成功完成了项目,并且已经具备大部分通用场景业务
|
没了,恭喜你已经成功完成了项目,并且已经具备大部分通用场景业务
|
||||||
是不是一个字?爽!
|
是不是一个字?爽!
|
||||||
到此为止,你无需写任何一个代码!
|
到此为止,你无需写任何一个代码!
|
||||||
|
|
||||||
|
**爽点**:
|
||||||
|
|
||||||
|
新人,看这里,项目下载之后直接可以启动,无任何依赖,之后你可以查看`Test控制器`,迫不及待的快来爽一爽!
|
||||||
|
|
||||||
我们将使用说明转移至我们的官方论坛中,正在制作中,尽情期待!
|
我们将使用说明转移至我们的官方论坛中,正在制作中,尽情期待!
|
||||||
|
|
||||||
****
|
****
|
||||||
|
|||||||
@@ -75,5 +75,11 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.TestController.TranTest">
|
||||||
|
<summary>
|
||||||
|
异步事务测试
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
{
|
{
|
||||||
private IStringLocalizer<LocalLanguage> _local;
|
private IStringLocalizer<LocalLanguage> _local;
|
||||||
private IUserService _iUserService;
|
private IUserService _iUserService;
|
||||||
|
//你可以依赖注入服务层各各接口,也可以注入其他仓储层,怎么爽怎么来!
|
||||||
public TestController(ILogger<UserEntity> logger, IUserService iUserService, IStringLocalizer<LocalLanguage> local)
|
public TestController(ILogger<UserEntity> logger, IUserService iUserService, IStringLocalizer<LocalLanguage> local)
|
||||||
{
|
{
|
||||||
_local = local;
|
_local = local;
|
||||||
@@ -34,9 +35,28 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
/// 特点:仓储代理上下文对象,用起来就是爽
|
// 特点:化繁为简!意框架仓储代理上下文对象,用起来就是爽,但最好按规范来爽!
|
||||||
|
// 规范:控制器建议不要使用切换仓储方法,控制器严禁使用DB上下文对象,其它怎么爽怎么来!
|
||||||
public async Task<Result> DbTest()
|
public async Task<Result> DbTest()
|
||||||
{
|
{
|
||||||
|
//非常好,使用UserService的特有方法
|
||||||
|
await _iUserService.DbTest();
|
||||||
|
|
||||||
|
//非常好,依赖注入使用其他Service的特有方法(就tm一张表,自己注入自己)
|
||||||
|
await _iUserService.DbTest();
|
||||||
|
|
||||||
|
//很核理,使用仓储的通用方法
|
||||||
|
await _iUserService._repository.GetListAsync();
|
||||||
|
|
||||||
|
//挺不错,依赖注入其他仓储(就tm一张表,自己注入自己)
|
||||||
|
await _iUserService._repository.GetListAsync();
|
||||||
|
|
||||||
|
//不建议,但爽了再说,直接切换其他仓储(就tm一张表,自己切换自己)
|
||||||
|
await _iUserService._repository.ChangeRepository<Repository<UserEntity>>().GetListAsync();
|
||||||
|
|
||||||
|
//恭喜你已经毕业了!此后将有一天,接手到这个的软件的程序员将破口大骂。
|
||||||
|
await _iUserService._repository._Db.Queryable<UserEntity>().ToListAsync();
|
||||||
|
|
||||||
return Result.Success().SetData(await _iUserService.DbTest());
|
return Result.Success().SetData(await _iUserService.DbTest());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +65,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
//根据浏览器语言设置来切换输出
|
||||||
public Result LocalTest()
|
public Result LocalTest()
|
||||||
{
|
{
|
||||||
return Result.Success().SetData(_local["succeed"]);
|
return Result.Success().SetData(_local["succeed"]);
|
||||||
@@ -71,5 +92,35 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
{
|
{
|
||||||
return Result.Success();
|
return Result.Success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步事务测试
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
//注册一个用户获取它的信息之后再更新它,但是这个年龄可能会报错
|
||||||
|
//如果一个事务中有任何一个错误,将会把所有执行过的操作进行回滚,确保数据的原子性
|
||||||
|
public async Task<Result> TranTest()
|
||||||
|
{
|
||||||
|
UserEntity user = new() { UserName = $"杰哥{DateTime.Now}", Password = "5201314", Age = 99 };
|
||||||
|
|
||||||
|
var res = await _iUserService._repository.UseTranAsync(async () =>
|
||||||
|
{
|
||||||
|
await _iUserService.Register(user, (o) => user = o);
|
||||||
|
user.Age = 18 / (new Random().Next(0, 2));
|
||||||
|
await _iUserService._repository.UpdateAsync(user);
|
||||||
|
});
|
||||||
|
if (res)
|
||||||
|
{
|
||||||
|
return Result.Success("执行成功!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Result.Error("发生错误,插入已回滚!");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//emmmm,看来一张表已经满足不了,接下来将要大更新一波
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -14,6 +14,7 @@ namespace Yi.Framework.Repository
|
|||||||
public interface IRepository<T> : ISimpleClient<T> where T : BaseModelEntity,new()
|
public interface IRepository<T> : ISimpleClient<T> where T : BaseModelEntity,new()
|
||||||
{
|
{
|
||||||
public ISqlSugarClient _Db { get; set; }
|
public ISqlSugarClient _Db { get; set; }
|
||||||
|
public Task<bool> UseTranAsync(Func<Task> func);
|
||||||
public Task<T> InsertReturnEntityAsync(T entity);
|
public Task<T> InsertReturnEntityAsync(T entity);
|
||||||
public Task<List<S>> StoreAsync<S>(string storeName, object para);
|
public Task<List<S>> StoreAsync<S>(string storeName, object para);
|
||||||
public Task<PageModel<List<T>>> CommonPageAsync(QueryPageCondition pars);
|
public Task<PageModel<List<T>>> CommonPageAsync(QueryPageCondition pars);
|
||||||
|
|||||||
@@ -24,6 +24,18 @@ namespace Yi.Framework.Repository
|
|||||||
_Db = context;
|
_Db = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步事务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="func"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<bool> UseTranAsync(Func<Task> func)
|
||||||
|
{
|
||||||
|
var res = await Db.AsTenant().UseTranAsync(func);
|
||||||
|
return res.IsSuccess;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 添加返回实体
|
/// 添加返回实体
|
||||||
|
|||||||
Reference in New Issue
Block a user