nd _Command = this.Connection.DatabaseProvide.Factory.CreateCommand();
59 _Command.Connection = this.Connection.Connection;
60 _Command.CommandText = argument_ProcedureName;
61 _Command.CommandType = CommandType.StoredProcedure;
62 DbDataReader _Reader = null;
63 if (null != argument_Parameters)
64 {
65 _Command.Parameters.AddRange(argument_Parameters);
66 }
67
68 try
69 {
70 _Reader = await _Command.ExecuteReaderAsync();
71 _QueryTable.Load(_Reader);
72 }
73 catch (Exception)
74 {
75
76 }
77 finally
78 {
79 _Reader.Close();
80 }
81
82 OperationValue _Value = new OperationValue();
83 _Value.Value = _QueryTable;
84 return _Value;
85 }
86 }
?
?
?以上提供的接口操作:
?
1 public interface IDatabaseCommandTextAsyncProvide
2 {
3 string CommandName { get; set; }
4 DatabaseConnection Connection { get; }
5 DbParameter NewParameter();
6 DbParameter NewParameter(string argument_ParameterName, object argument_Value, DbType argument_DbType, ParameterDirection Direction);
7 Task QueryAsync(string argument_SqlText, DbParameter[] argument_Parameters);
8 Task QueryAsync(string argument_SqlText, DbTransaction argument_Transaction, DbParameter[] argument_Parameters);
9 Task TransactionSaveAsync(string argument_SqlText, DbParameter[] argument_Parameters);
10 Task SaveAsync(string argument_SqlText, DbParameter[] argument_Parameters);
11 Task SaveAsync(string argument_SqlText, DbTransaction argument_Transaction, DbParameter[] argument_Parameters);
12 Task TransactionModifyAsync(string argument_SqlText, DbParameter[] argument_Parameters);
13 Task ModifyAsync(string argument_SqlText, DbParameter[] argument_Parameters);
14 Task ModifyAsync(string argument_SqlText, DbTransaction argument_Transaction, DbParameter[] argument_Parameters);
15 Task TransactionDeleteAsync(string argument_SqlText, DbParameter[] argument_Parameters);
16 Task DeleteAsync(string argument_SqlText, DbParameter[] argument_Parameters);
17 Task DeleteAsync(string argument_SqlText, DbTransaction argument_Transaction, DbParameter[] argument_Parameters);
18 }
?
?
1 public interface IDatabaseCommandProcedureAsyncProvide
2 {
3 string CommandName { get; set; }
4 DatabaseConnection Connection { get; }
5 Task Query(string argument_ProcedureName, DbParameter[] argument_Parameters);
6 Task ExecuteNonQuery(string argument_ProcedureName, DbParameter[] argument_Parameters);
7 DbParameter NewParameter();
8 DbParameter NewParameter(string argument_ParameterName, object argument_Value, DbType argument_DbType, ParameterDirection Direction);
9 }
?
?
?
很简单,异步的操作也是如此.
?
?
?
OperationValue:
?
? 前面介绍过,所有的操作结果都存储在OperationValue.Value上.Value这个属性是object类型. 操作的时候,可能出现大量的装箱和拆箱的操作,这个可以自己去细化按需实现,我只是用它来学习他用,并没有考虑到性能之类的考量.
?
?
?
DatabaseOperation:
?
1 public interface IOperation
2 {
3 DatabaseOperation BeginTransaction();
4 DatabaseOperation EndTransaction();
5 DatabaseOperation CancelTransaction();
6 DatabaseOperation ExecuteTextCommand(Func argument_Command);
7 DatabaseOperation ExecuteTextCommand(Func argument_Command);
8 DatabaseOperation ExecuteProcedureCommand(Func argument_Command);
9 DatabaseOperation WidthExecute