-
Notifications
You must be signed in to change notification settings - Fork 168
Expand file tree
/
Copy pathDbRepository.cs
More file actions
67 lines (64 loc) · 2.41 KB
/
Copy pathDbRepository.cs
File metadata and controls
67 lines (64 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Logging;
using SmartSql;
using SmartSql.Options;
namespace SmartCode.Db
{
public class DbRepository : IDbRepository
{
private readonly Configuration.DataSource _dataSource;
private readonly ILoggerFactory _loggerFactory;
private readonly ILogger<DbRepository> _logger;
public ISqlMapper SqlMapper { get; private set; }
public string DbProviderName { get; private set; }
public DbProvider DbProvider => (DbProvider)Enum.Parse(typeof(DbProvider), DbProviderName);
public string DbName { get; private set; }
public string DbSchema { get; protected set; }
public string ConnectionString { get; private set; }
public String SqlMapPath { get; private set; } = "Maps";
public DbRepository(
Configuration.DataSource dataSource
, ILoggerFactory loggerFactory)
{
_dataSource = dataSource;
_loggerFactory = loggerFactory;
_logger = loggerFactory.CreateLogger<DbRepository>();
InitDataSource();
InitSqlMapper();
}
private void InitDataSource()
{
var dataSource = _dataSource;
dataSource.Parameters.EnsureValue("DbProvider", out string dbProvider);
DbProviderName = dbProvider;
dataSource.Parameters.EnsureValue("DbName", out string dbName);
DbName = dbName;
dataSource.Parameters.EnsureValue("ConnectionString", out string connectionString);
ConnectionString = connectionString;
if (dataSource.Parameters.Value("DbSchema", out string dbSchema))
{
DbSchema = dbSchema;
}
if (dataSource.Parameters.Value("SqlMapPath", out string mapPath))
{
SqlMapPath = mapPath;
}
}
private void InitSqlMapper()
{
SqlMapper = SmartSqlMapperFactory.Create(new SmartSqlMapperFactory.CreateSmartSqlMapperOptions
{
DataSource = new DataSource
{
Name = DbName,
ConnectionString = ConnectionString
},
LoggerFactory = _loggerFactory,
ProviderName = DbProviderName,
SqlMapPath = SqlMapPath
});
}
}
}