11. Scoped 静态类
📝 模块更新日志
-
问题修复
-
Scoped.CreateUowAsync
作用域工作单元异常无法回滚问题 4.8.8.44 ⏱️2023.09.23 #I833I9
-
11.1 创建一个依赖注入作用域范围
// 同步
Scoped.Create((factory, scope) => {
var services = scope.ServiceProvider;
});
// 异步
await Scoped.CreateAsync(async (factory, scope) => {
var services = scope.ServiceProvider;
await _calcService.GetAsync();
// ...
})
数据库操作注意
如果作用域中对数据库有任何变更操作,需手动调用 SaveChanges
或带 Now
结尾的方法。也可以使用 Scoped.CreateUow(handler)
代替。
11.2 创建一个带工作单元的作用域
// 同步
Scoped.CreateUow((factory, scope) => {
var services = scope.ServiceProvider;
});
// 异步
await Scope.CreateUowAsync(async (factory, scope) => {
var services = scope.ServiceProvider;
await _calcService.GetAsync();
// ...
});
此方法将在执行完毕之后自动调用 SaveChanges()
11.3 创建一个依赖注入作用域范围(带返回值)
移除声明
在 Furion v2.18+
版本移除带返回值的作用域(该方法属于多余操作)
var obj = Scoped.CreateRef<string>((factory, scope) => {
var services = scope.ServiceProvider;
return "返回值";
});
11.4 创建一个带工作单元的作用域(带返回值)
移除声明
在 Furion v2.18+
版本移除带返回值的作用域(该方法属于多余操作)
var obj = Scoped.CreateUowRef<string>((factory, scope) => {
var services = scope.ServiceProvider;
return "返回值";
});