forked from ThatRendle/Simple.Data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataStrategyWithOptions.cs
More file actions
66 lines (55 loc) · 1.92 KB
/
DataStrategyWithOptions.cs
File metadata and controls
66 lines (55 loc) · 1.92 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
using System.Data;
using Simple.Data.Commands;
namespace Simple.Data
{
internal class DataStrategyWithOptions : DataStrategy
{
private readonly DataStrategy _wrappedStrategy;
private readonly OptionsBase _options;
public DataStrategyWithOptions(DataStrategy wrappedStrategy, OptionsBase options)
{
_options = options;
_wrappedStrategy = wrappedStrategy.Clone();
_wrappedStrategy.GetAdapter().Options = options;
}
public override Adapter GetAdapter()
{
var adapter = _wrappedStrategy.GetAdapter();
adapter.Options = _options;
return adapter;
}
public SimpleTransaction BeginTransaction()
{
return SimpleTransaction.Begin(this);
}
public SimpleTransaction BeginTransaction(string name)
{
return SimpleTransaction.Begin(this, name);
}
public SimpleTransaction BeginTransaction(IsolationLevel isolationLevel)
{
return SimpleTransaction.Begin(this, isolationLevel);
}
protected internal override bool ExecuteFunction(out object result, ExecuteFunctionCommand command)
{
return _wrappedStrategy.ExecuteFunction(out result, command);
}
protected internal override DataStrategy GetDatabase()
{
return _wrappedStrategy.GetDatabase();
}
internal override RunStrategy Run
{
get { return _wrappedStrategy.Run; }
}
protected internal override DataStrategy Clone()
{
return new DataStrategyWithOptions(_wrappedStrategy, _options);
}
public override dynamic ClearOptions()
{
_wrappedStrategy.GetAdapter().Options = null;
return _wrappedStrategy;
}
}
}