C# 注入DbContext并使用一个连接执行多个查询
我正在使用EF Core和ASP.NET Core:C# 注入DbContext并使用一个连接执行多个查询,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我正在使用EF Core和ASP.NET Core: public partial class SecurityDBContext : DbContext { // injecting the DBcontext from the ASP.NET or Bootstrap applicaiton with the required connection string public SecurityDBContext(DbContextOptions options)
public partial class SecurityDBContext : DbContext
{
// injecting the DBcontext from the ASP.NET or Bootstrap applicaiton with the required connection string
public SecurityDBContext(DbContextOptions options) : base(options)
{
}
}
这是我的存储库类,我将在其中注入所需的上下文:
public class UserRepository : IUserRepository
{
private SecurityDBContext securityDb;
private readonly ILogger<UserRepository> _logger;
public UserRepository(SecurityDBContext securityContext, ILogger<UserRepository> logger)
{
securityDb = securityContext;
_logger = logger;
}
public void MultipleQueries(int id)
{
var result1= securityDb.Users.Where(u=> u.Id == id).SingleOrDefault();
//var result2 = securityDb.Table2.Where(...)ToList();
}
公共类用户存储库:IUserRepository
{
私有SecurityDBContext securityDb;
专用只读ILogger\u记录器;
公共用户存储库(SecurityDBContext securityContext,ILogger记录器)
{
securityDb=securityContext;
_记录器=记录器;
}
公共void多任务(int-id)
{
var result1=securityDb.Users.Where(u=>u.Id==Id.SingleOrDefault();
//var result2=securityDb.Table2.Where(…)ToList();
}
以下是我如何通过依赖关系:
var securityDB = configurationRoot.GetConnectionString("SecurityDatabase");
if (securityDB == null)
{
throw new ArgumentNullException("SecurityDatabase ConnectionString");
}
//EnityDB
services.AddEntityFrameworkSqlServer().AddDbContext<SecurityCore.Repositories.SecurityDBContext>(options => options.UseSqlServer(securityDB));
var securityDB=configurationRoot.GetConnectionString(“SecurityDatabase”);
if(securityDB==null)
{
抛出新ArgumentNullException(“SecurityDatabase ConnectionString”);
}
//EnityDB
services.AddEntityFrameworkSqlServer().AddDbContext(options=>options.UseSqlServer(securityDB));
假设结果2和结果3在不同的DB实体上执行,上下文是否为每个查询打开连接?如果是,那么我如何根据最佳实践避免这种情况,并通过一个连接进行查询。保持连接打开不是最佳实践。@GertArnold,请澄清,您的意思是它总是打开的吗既然我没有处理它,依赖注入框架不应该管理它吗?上下文管理它自己的数据库连接,你不必担心这一点。只要使用上下文,只要你需要它(标准是:在一个请求期间)不要打开和关闭数据库连接。不,我是说你不应该担心连接。我不理解你的问题。你担心什么?当你只使用注入的上下文时,你认为你不能做什么?@h.salman:你有任何证据支持你的假设吗?DbContext在其中保留一个连接池并重用它。没有必要自己管理连接。你不应该做任何形式的先发制人的优化,而不是声称有问题!!!