我与ADO.NET二三事(八)

2015-11-21 02:04:02 · 作者: · 浏览: 74
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