| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
DotNetCore.CAP 的 Oracle 消息存储扩展。
本项目基于官方 DotNetCore.CAP.MySql 改造而来,整体结构、扩展注册方式与事务集成模式与 MySQL 实现保持一致,并针对 Oracle 语法、驱动与表结构做了适配。
| 对比项 | DotNetCore.CAP.MySql | DotNetCore.CAP.Oracle |
|---|---|---|
| 扩展方法 | UseMySql | UseOracle |
| 配置类 | MySqlOptions | OracleOptions |
| 数据库驱动 | MySqlConnector / MySql.Data | Oracle.ManagedDataAccess.Core |
| 表命名 | TableNamePrefix(前缀) | Schema(Schema,默认 cap) |
| DDL / SQL | MySQL 语法 | Oracle PL/SQL、双引号标识符等 |
主要保留了 MySQL 扩展中的能力:
在 AddCap 中配置 Oracle 作为消息持久化存储(消息传输仍需自行选择 RabbitMQ、Kafka 等):
services.AddCap(x =>
{
// 使用连接字符串
x.UseOracle("User Id=scott;Password=tiger;Data Source=localhost:1521/ORCL");
// 或使用配置委托
// x.UseOracle(opt =>
// {
// opt.ConnectionString = "...";
// opt.Schema = "cap";
// });
x.UseRabbitMQ("localhost"); // 示例:消息队列
});services.AddDbContext<AppDbContext>();
services.AddCap(x =>
{
// 自动从 DbContext 读取连接字符串
x.UseEntityFramework<AppDbContext>();
x.UseRabbitMQ("localhost");
});| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| ConnectionString | Oracle 连接字符串 | string | null |
| Schema | CAP 表所在 Schema | string | cap |
Schema 需事先存在(通常为当前连接用户)。初始化时会在该 Schema 下创建 published、received、lock 等表。
private readonly ICapPublisher _capBus;
await using var connection = new OracleConnection(connectionString);
using var transaction = connection.BeginTransaction(_capBus, autoCommit: false);
// 业务写库 ...
await _capBus.PublishAsync("sample.oracle", DateTime.Now);
transaction.Commit();private readonly ICapPublisher _capBus;
using var trans = dbContext.Database.BeginTransaction(_capBus, autoCommit: false);
dbContext.Persons.Add(new Person { Name = "ef.transaction" });
await _capBus.PublishAsync("sample.oracle", DateTime.Now);
await dbContext.SaveChangesAsync();
trans.Commit();| Back | FazBrowse Home | New Git URL |