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"));

});

//...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值