在asp.net中常常使用Dapper进行数据库操作,而现在项目主要使用NetCore开发
以往项目中通常会有一些公共工具库或通用数据操作库等,这样方便各个项目拿去即用
那么现在基于netcore开发,需要将Dapper进行封装为类库,让开发人员使用更方便快捷。
创建一个netcore类库,通过NuGet引入Dapper,下面代码中还使用了Oracle数据库,所以得引入Oracle.ManagedDataAccess.Core
数据库操作参数
public class ConnectionConfig
{
public string ConnectionString {
get; set; }
public DbStoreType DbType {
get; set; }
}
public enum DbStoreType
{
MySql = 0,
SqlServer = 1,
Sqlite = 2,
Oracle = 3
}
public class DapperFactoryOptions
{
public IList<Action<ConnectionConfig>> DapperActions {
get; } = new List<Action<ConnectionConfig>>();
}
定义一个操作接口
public interface IDapperFactory
{
DapperClient CreateClient(string name);
}
实现接口
public class DefaultDapperFactory : IDapperFactory
{
private readonly IServiceProvider _services;
private readonly IOptionsMonitor<DapperFactoryOptions> _optionsMonitor;
public DefaultDapperFactory(IServiceProvider services,IOptionsMonitor<DapperFactoryOptions> optionsMonitor)
{
_services = services ?? throw new ArgumentNullException(nameof(services));
_optionsMonitor = optionsMonitor ?? throw new ArgumentNullException(nameof(optionsMonitor));
}
public DapperClient CreateClient(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
var client = new DapperClient(new ConnectionConfig {
});
var option = _optionsMonitor.Get(name).DapperActions.FirstOrDefault();
if (option != null)
option(client.CurrentConnectionConfig);
else
throw new ArgumentNullException(nameof(option));
return client;
}
}
数据库操作类,增删改查方法封装的太多篇幅较长,这里只贴出了常用的一部分方法
public class DapperClient
{
public ConnectionConfig CurrentConnectionConfig {
get; set; }
public DapperClient(IOptionsMonitor<ConnectionConfig> config)
{