Skip to main content

11. Scoped 静态类

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