具有不同连接的多个DbContexts的问题

时间:2016-08-30 17:53:32

标签: c# wpf oracle entity-framework entity-framework-6

当我使用不同连接创建多个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用户

1 个答案:

答案 0 :(得分:0)

它可能与连接池有关。

您可以在oracle连接字符串(https://docs.oracle.com/cd/B13789_01/win.101/b10117/features001.htm)中指定几个参数,但在您的情况下Pooling=false应该足够了。
顺便说一下,关闭连接池会降低性能。