❤️ 关注 Furion 微信公众号有惊喜哦!
Skip to main content

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 "返回值";
});