@@ -15,9 +15,10 @@ internal class ExecutorFactory
1515 private static FuncDict CreateFunctionDictionary ( )
1616 {
1717 ICollection < KeyValuePair < Type , ExecuteFunc > > dict = new FuncDict ( ) ;
18- dict . Add ( CreateFunction < QueryOperation > ( ExecuteQuery ) ) ;
19- dict . Add ( CreateFunction < InsertOperation > ( ExecuteInsert ) ) ;
20- dict . Add ( CreateFunction < UpdateEntityOperation > ( ExecuteUpdateEntity ) ) ;
18+ dict . Add ( CreateFunction < QueryOperation > ( QueryExecutor . ExecuteQuery ) ) ;
19+ dict . Add ( CreateFunction < InsertOperation > ( InsertExecutor . ExecuteInsert ) ) ;
20+ dict . Add ( CreateFunction < UpdateEntityOperation > ( UpdateEntityExecutor . ExecuteUpdateEntity ) ) ;
21+ dict . Add ( CreateFunction < DeleteOperation > ( DeleteExecutor . Execute ) ) ;
2122 return ( FuncDict ) dict ;
2223 }
2324
@@ -27,81 +28,9 @@ private static KeyValuePair<Type, ExecuteFunc> CreateFunction<T>(Func<T, AdoAdap
2728 return new KeyValuePair < Type , ExecuteFunc > ( typeof ( T ) , func ) ;
2829 }
2930
30- private static QueryResult ExecuteQuery ( QueryOperation query , AdoAdapter adapter , AdoAdapterTransaction transaction )
31- {
32- var queryRunner = new AdoAdapterQueryRunner ( adapter , transaction ) ;
33- IEnumerable < SimpleQueryClauseBase > unhandled ;
34- var data = queryRunner . RunQuery ( query . Query , out unhandled ) ;
35- return new QueryResult ( data , unhandled ) ;
36- }
37-
38- private static DataResult ExecuteInsert ( InsertOperation operation , AdoAdapter adapter , AdoAdapterTransaction transaction )
39- {
40- var checkedEnumerable = CheckedEnumerable . Create ( operation . Data ) ;
41- if ( checkedEnumerable . IsEmpty ) return DataResult . Empty ;
42- var inserter = transaction == null ?
43- new AdoAdapterInserter ( adapter )
44- :
45- new AdoAdapterInserter ( adapter , transaction . DbTransaction ) ;
46-
47- if ( checkedEnumerable . HasMoreThanOneValue )
48- {
49- return new DataResult (
50- inserter . InsertMany ( operation . TableName , checkedEnumerable , operation . ErrorCallback ,
51- operation . ResultRequired ) ) ;
52- }
53- return new DataResult ( inserter . Insert ( operation . TableName , checkedEnumerable . Single , operation . ResultRequired ) ) ;
54- }
55-
56- private static CommandResult ExecuteUpdateEntity ( UpdateEntityOperation operation , AdoAdapter adapter ,
57- AdoAdapterTransaction transaction )
58- {
59- var checkedEnumerable = CheckedEnumerable . Create ( operation . Data ) ;
60- if ( checkedEnumerable . IsEmpty ) return CommandResult . Empty ;
61-
62- if ( checkedEnumerable . HasMoreThanOneValue )
63- {
64- return BulkUpdateEntity ( operation , adapter , transaction , checkedEnumerable ) ;
65- }
66-
67- string [ ] keyFieldNames = adapter . GetKeyNames ( operation . TableName ) . ToArray ( ) ;
68- if ( keyFieldNames . Length == 0 ) throw new AdoAdapterException ( string . Format ( "No primary key found for implicit update of table '{0}'." , operation . TableName ) ) ;
69- var dict = checkedEnumerable . Single ;
70-
71- return new CommandResult ( Update ( adapter , operation . TableName , checkedEnumerable . Single , Adapter . GetCriteria ( operation . TableName , keyFieldNames , ref dict ) , GetDbTransaction ( transaction ) ) ) ;
72- }
73-
74- private static int Update ( AdoAdapter adapter , string tableName , IReadOnlyDictionary < string , object > data , SimpleExpression criteria , IDbTransaction transaction )
75- {
76- ICommandBuilder commandBuilder = new UpdateHelper ( adapter . GetSchema ( ) ) . GetUpdateCommand ( tableName , data , criteria ) ;
77- return transaction == null ? adapter . Execute ( commandBuilder ) : adapter . Execute ( commandBuilder , transaction ) ;
78- }
79-
80- private static CommandResult BulkUpdateEntity ( UpdateEntityOperation operation , AdoAdapter adapter ,
81- AdoAdapterTransaction transaction , IEnumerable < IReadOnlyDictionary < string , object > > checkedEnumerable )
82- {
83- IBulkUpdater bulkUpdater = adapter . ProviderHelper . GetCustomProvider < IBulkUpdater > ( adapter . ConnectionProvider ) ??
84- new BulkUpdater ( ) ;
85- if ( operation . CriteriaFieldNames != null )
86- {
87- return
88- new CommandResult ( bulkUpdater . Update ( adapter , operation . TableName , checkedEnumerable ,
89- operation . CriteriaFieldNames ,
90- GetDbTransaction ( transaction ) ) ) ;
91- }
92- return
93- new CommandResult ( bulkUpdater . Update ( adapter , operation . TableName , checkedEnumerable ,
94- GetDbTransaction ( transaction ) ) ) ;
95- }
96-
9731 public bool TryGet ( IOperation operation , out ExecuteFunc func )
9832 {
9933 return Functions . TryGetValue ( operation . GetType ( ) , out func ) ;
10034 }
101-
102- private static IDbTransaction GetDbTransaction ( AdoAdapterTransaction transaction )
103- {
104- return transaction != null ? transaction . DbTransaction : null ;
105- }
10635 }
10736}
0 commit comments