|
wParameter(string argument_ParameterName, object argument_Value, DbType argument_DbType, ParameterDirection Direction);
9 }
通过IDatabaseCommandTextProvide接口可以看出有Transaction开头命名的方法,很显然它实现了事物操作.有人可能对CommandName不是很了解.它用于记录命令操作结果的名称,最能体现的是使用IOperation接口实现的DatabaseOperation操作.后期会提供案例.关于存储过程在Code上加上事物这里没有做,主要是考虑既然编写了存储过程脚本,那么你的事物应该在存储过程上处理,而不是在Code上.
DatabaseCommandTextAsync 和 DatabaseCommandProcedureAsync:
1 public sealed class DatabaseCommandTextAsync : IDatabaseCommandTextAsyncProvide
2 {
3 public DatabaseCommandTextAsync(DatabaseConnection argument_Connection)
4 {
5 this.Connection = argument_Connection;
6 }
7
8 public string CommandName
9 {
10 get;
11 set;
12 }
13
14 public DatabaseConnection Connection
15 {
16 get;
17 private set;
18 }
19
20 public DbParameter NewParameter()
21 {
22 return this.Connection.DatabaseProvide.Factory.CreateParameter();
23 }
24
25 public DbParameter NewParameter(string argument_ParameterName, object argument_Value, DbType argument_DbType, ParameterDirection Direction)
26 {
27 DbParameter _Parameter = this.Connection.DatabaseProvide.Factory.CreateParameter();
28 _Parameter.ParameterName = argument_ParameterName;
29 _Parameter.Value = argument_Value;
30 _Parameter.DbType = argument_DbType;
31 _Parameter.Direction = Direction;
32 return _Parameter;
33 }
34
35 public async Task DeleteAsync(string argument_SqlText, DbParameter[] argument_Parameters)
36 {
37 this.Connection.Open();
38 int _CommandResult = 0;
39 DbCommand _Command = this.Connection.DatabaseProvide.Factory.CreateCommand();
40 _Command.Connection = this.Connection.Connection;
41 _Command.CommandText = argument_SqlText;
42 _Command.CommandType = CommandType.Text;
43 if (null != argument_Parameters)
44 {
45 _Command.Parameters.AddRange(argument_Parameters);
46 }
47
48 try
49 {
50 _CommandResult = await _Command.ExecuteNonQueryAsync();
51 }
52 catch (Exception)
53 {
54 }
55
56 OperationValue _Value = new OperationValue();
57 _Value.Value = _CommandResult;
58
59 return _Value;
60 }
61
62 public async Task DeleteAsync(string argument_SqlText, DbTransaction argument_Transaction, DbParameter[] argument_Parameters)
63 {
64 this.Connection.Open();
65 int _CommandResult = 0;
66 DbCommand _Command = this.Connection.DatabaseProvide.Factory.CreateCommand();
67 DbTransaction _Transaction = argument_Transaction;
68 _Command.Connection = this.Connection.Connection;
69 _Command.Transaction = _Transaction;
70 _Command.CommandText = argument_SqlText;
71 _Command.CommandType = CommandType.Text;
72 if (null != argument_Parameters)
73 {
74 _Command.Parameters.AddRange(argument_Parameters);
75 }
76
77 try
78 {
79 _CommandResult = await _Command.ExecuteNonQueryAsync();
80 //_Transaction.Commit();
81 }
82 catch (Exception)
83 {
84 _Transaction.Rollback();
85 }
86
87 OperationValue _Value = new OperationValue();
88 _Value.Value = _CommandResult;
89
90 return _Value;
91 }
92
93 public async Task ModifyAsync(string argument_SqlText, DbParameter[] argument_Parameters)
94 {
95 this.Connection.Open();
96 int _CommandResult = 0;
97 DbCommand _Command = this.Connection.DatabaseProvide.Fact |