Skip to content

TYC-Studio/sharwapi.Plugin.database

Repository files navigation

Database Plugin

一个为SharwAPI设计的数据库服务插件,提供灵活、可配置的数据库访问能力。

安装与配置

  1. 把插件文件(一般为sharwapi.Plugin.database.dll)放入SharwApi框架运行目录的/Plugins文件夹下即可。
  2. appsettings.json中添加DatabasePlugin字典:
  • ExposePluginWebApi : 布尔值,决定插件是否暴露插件的网络Api,WIP(功能尚在开发)

使用示例

• 可以直接从 DI 获取IDatabaseService,或者使用 IDatabaseServiceFactory 临时创建服务实例。

• 在每个作用域/请求中必须在使用DatabaseService前设置DatabaseContext

代码用例(片段)

var builder = WebApplication.CreateBuilder(args);
// 注册 IDatabaseContext 实现
services.AddSingleton<IDatabaseContext>(serviceProvider =>
        {
            return new DatabaseContext
            {
                ConnectionString = configuration.GetConnectionString("DefaultConnection") ?? throw new ArgumentException("DefaultConnection is required to be configured."),
                DatabaseType = configuration.GetValue<string>($"{DatabaseContext.SectionName}:DatabaseType") ?? throw new ArgumentException("DatabaseType is required to be configured."),
                CommandTimeout = configuration.GetValue<int>($"{DatabaseContext.SectionName}:CommandTimeout"),
                UseTransaction = configuration.GetValue<bool>($"{DatabaseContext.SectionName}:UseTransaction"),
            };
        });
var app = builder.Build();

app.MapGet("/test-connection", async (IDatabaseServiceFactory factory) =>
{
    var conn = app.Configuration.GetConnectionString("Default") ?? throw new InvalidOperationException("No connection string configured");
    using var svc = factory.CreateService(conn) as IDisposable; // DatabaseService 实现了 IDisposable
    var db = factory.CreateService(conn);
    var ok = await db.TestConnectionAsync();
    return Results.Ok(new { ok });
});

//不要忘了
app.Run();

功能 & 核心接口

IDatabaseService

数据库操作主接口,提供:

  • QueryAsync<T> - 执行查询
  • ExecuteAsync - 执行非查询命令
  • GetContext() - 获取当前数据库上下文
  • TestConnectionAsync() - 测试连接
  • Dispose() - 释放资源

IDatabaseServiceFactory

数据库服务工厂,用于创建特定连接的数据库实例:

  • CreateService(string connectionString) - 通过连接字符串创建
  • CreateService(DatabaseContext context) - 通过完整上下文创建

DatabaseContext

数据库上下文对象,包含:

  • ConnectionString - 数据库连接字符串
  • CommandTimeout - 命令超时时间
  • DatabaseType - 数据库类型(SqlServer/PostgreSQL/MySQL)
  • UseTransaction - 是否使用事务

用于开发调试的网络接口

...WIP...(功能尚在开发)

依赖要求

  • .NET 6.0 或更高版本

About

Database plugin for Sharwapi

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages