当我使用不同连接创建多个DbContext时,会为数据库创建额外的连接。我的样本可能只有2个连接吗?
var vOracleConnection1 = new OracleConnection(vConnectionString);
vOracleConnection1.Open();
var vDbContext1 = new DbContext(existingConnection : vOracleConnection1
,contextOwnsConnection : false
);
vUser1 = vDbContext1.users.FirstOrDefault(vUsr => vUsr.Code = 123);
var vOracleConnection2 = new OracleConnection(vConnectionString);
vOracleConnection2.Open();
var vDbContext2 = new DbContext(existingConnection : vOracleConnection2
,contextOwnsConnection : false
);
vUser2 = vDbContext2.users.FirstOrDefault(vUsr=> vUsr.Code = 456);
使用1个DbContext连接到Oracle Server我有1个连接:
程序机OSUser服务器SID状态终端类型SQL_ID
1- LORRFR服务器\ WKS-LORRFR lorrfr专用361非活动WKS-LORRFR用户
使用2个DbContexts连接到Oracle Server我有7个连接:
程序机OSUser服务器SID状态终端类型SQL_ID
1- LORRFR服务器\ WKS-LORRFR lorrfr专用18非活动WKS-LORRFR用户
2- LORRFR服务器\ WKS-LORRFR lorrfr专用24非活动WKS-LORRFR用户
3- LORRFR服务器\ WKS-LORRFR lorrfr专用25非活动WKS-LORRFR用户
4- LORRFR服务器\ WKS-LORRFR lorrfr专用367非活动WKS-LORRFR用户
5- LORRFR服务器\ WKS-LORRFR lorrfr专用361非活动WKS-LORRFR用户
6- LORRFR服务器\ WKS-LORRFR lorrfr专用366非活动WKS-LORRFR用户
7- LORRFR服务器\ WKS-LORRFR lorrfr专用358非活动WKS-LORRFR用户
经过几次,我们回到了2个连接点:
程序机OSUser服务器SID状态终端类型SQL_ID
1- LORRFR服务器\ WKS-LORRFR lorrfr专用361非活动WKS-LORRFR用户
2- LORRFR服务器\ WKS-LORRFR lorrfr专用18非活动WKS-LORRFR用户
答案 0 :(得分:0)
它可能与连接池有关。
您可以在oracle连接字符串(https://docs.oracle.com/cd/B13789_01/win.101/b10117/features001.htm)中指定几个参数,但在您的情况下Pooling=false
应该足够了。
顺便说一下,关闭连接池会降低性能。