天天看點

oracle檢視context,Oracle-建立DbContext

建立 DbContext

對于 Oracle 資料庫,需要安裝 Install-Package Chloe.Oracle 以及 Oracle 的驅動,然後使用 Chloe.Oracle.OracleContext 建立上下文執行個體。注意:DbContext 執行個體非線程安全,一定要避免多線程同時使用同一個 DbContext 對象。同時,用完務必要将 DbContext 釋放。

因為架構本身需要與具體的資料庫驅動解耦,是以 OracleContext 構造函數需要一個 IDbConnectionFactory 的參數,IDbConnectionFactory 接口隻有一個 CreateConnection() 方法,必須先建個類,實作 CreateConnection 方法。

public class OracleConnectionFactory : IDbConnectionFactory

{

string _connString = null;

public OracleConnectionFactory(string connString)

{

this._connString = connString;

}

public IDbConnection CreateConnection()

{

OracleConnection oracleConnection = new OracleConnection(this._connString);

OracleConnectionDecorator conn = new OracleConnectionDecorator(oracleConnection);

return conn;

}

}

由于筆者使用的是 Oracle.ManagedDataAccess 資料庫驅動,OracleConnection 建立的 DbCommand 預設是以順序方式綁定參數,是以,上述例子使用了裝飾者模式對 OracleConnection 封裝了一遍,主要就是修改 DbCommand 參數綁定方式。OracleConnectionDecorator 定義如下:

///

/// 該裝飾器主要修改參數綁定方式。

///

class OracleConnectionDecorator : DbConnectionDecorator, IDbConnection, IDisposable

{

OracleConnection _oracleConnection;

public OracleConnectionDecorator(OracleConnection oracleConnection) : base(oracleConnection)

{

this._oracleConnection = oracleConnection;

}

public override IDbCommand CreateCommand()

{

var cmd = this._oracleConnection.CreateCommand();

cmd.BindByName = true; //修改 DbCommand 參數綁定方式

return cmd;

}

}

接下來就可以建立 OracleContext:

string connString = "Your connection string";

OracleContext context = new OracleContext(new OracleConnectionFactory(connString));

OracleContext 生成 sql 語句時預設将表名和字段轉成大寫形式,如需要修改該預設設定,操作如下:

context.ConvertToUppercase = false;

ASP.NET CORE 配置 Service:

public void ConfigureServices(IServiceCollection services)

{

//...

services.AddScoped((serviceProvider) =>

{

return new Chloe.Oracle.OracleContext(new OracleConnectionFactory("Your connection string"));

});

//...

}