gpt4 book ai didi

c# - 对 DBContext 使用依赖注入(inject)时,使用语句的外观应该如何?

转载 作者:行者123 更新时间:2023-12-04 00:33:02 25 4
gpt4 key购买 nike

将 DBContext 注入(inject)我的存储库时,using 应该如何处理?声明看?

前任:
启动.cs

services.AddDbContext<VisualDbContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:DefaultConnection"]));


VisualDbContext.cs

public partial class VisualDbContext : DbContext
{
public VisualDbContext(DbContextOptions<VisualDbContext> options) : base(options)
{}

public DbSet<Template> Template { get; set; }
public DbSet<Exercise> Exercise { get; set; }
public DbSet<Symbol> Symbol { get; set; }
}

存储库

public class TemplateRepository : ITemplateRepository
{
private readonly VisualDbContext _dbContext;
public TemplateRepository(VisualDbContext dbContext)

{
_dbContext = dbContext;
}

public async Task<List<KeyValuePair<char, string>>> GetTemplateAsync(int templateId)
{
using (_dbContext) //this seems wrong...
{
...
}
}

最佳答案

在 .NET Core 的 DI 中,DbContext 将注册为 Scoped Service ,这意味着它的生命周期是由 DI 容器控制的,你不必担心它。
在 ASP.NET Core 中,Scope 与 Http 请求相关联,因此您将在请求处理过程中将相同的 DbContext 实例注入(inject)到所有相关服务中,并且 DbContext 将在请求结束时被释放。
这都简化了您的代码,因为您可以省略 DbContext 和 using 的初始化。 block ,它使您能够轻松地确定跨服务边界的事务范围。

关于c# - 对 DBContext 使用依赖注入(inject)时,使用语句的外观应该如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60956705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com