依赖注入中的 AddScoped
AddScoped in dependency injection
我一直在阅读,我在我的 EF Core 项目中使用 AddScoped 是最好的,这样我可以使用许多上下文进行更新,这样我就可以在我执行 SaveChanges 时停止 'already tracked' 错误消息。
这是我的依赖注入代码。只是徘徊我如何使这个 'AddScoped' 而不是单身人士?
任何帮助都会很棒,因为我对这个依赖注入、EF Core 等还很陌生
public override void Configure(IFunctionsHostBuilder builder)
{
// CCT database
builder.Services.AddDbContext<sqldbCCTUKSATPPreProdContext>(
options =>
{
const string ConnString = "SQLConnectionStringCCT";
options.UseSqlServer(Configuration.GetConnectionString(ConnString)).UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll);
});
// CL database (Segimport DB)
builder.Services.AddDbContext<sqldbCLSegImportUKSATPPreProdContext>(
options =>
{
const string CLConnString = "SQLConnectionStringCL";
options.UseSqlServer(Configuration.GetConnectionString(CLConnString)).UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll);
options.EnableSensitiveDataLogging();
});
AddDbContext
默认将上下文注册为范围 - 请参阅 contextLifetime
的默认值 ServiceLifetime.Scoped
。您关于“已跟踪”的问题来自其他地方。
我一直在阅读,我在我的 EF Core 项目中使用 AddScoped 是最好的,这样我可以使用许多上下文进行更新,这样我就可以在我执行 SaveChanges 时停止 'already tracked' 错误消息。
这是我的依赖注入代码。只是徘徊我如何使这个 'AddScoped' 而不是单身人士?
任何帮助都会很棒,因为我对这个依赖注入、EF Core 等还很陌生
public override void Configure(IFunctionsHostBuilder builder)
{
// CCT database
builder.Services.AddDbContext<sqldbCCTUKSATPPreProdContext>(
options =>
{
const string ConnString = "SQLConnectionStringCCT";
options.UseSqlServer(Configuration.GetConnectionString(ConnString)).UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll);
});
// CL database (Segimport DB)
builder.Services.AddDbContext<sqldbCLSegImportUKSATPPreProdContext>(
options =>
{
const string CLConnString = "SQLConnectionStringCL";
options.UseSqlServer(Configuration.GetConnectionString(CLConnString)).UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll);
options.EnableSensitiveDataLogging();
});
AddDbContext
默认将上下文注册为范围 - 请参阅 contextLifetime
的默认值 ServiceLifetime.Scoped
。您关于“已跟踪”的问题来自其他地方。