@@ -21,19 +21,19 @@ module Db =
2121 return result
2222 }
2323
24- let private createReadCommand ( connection : DbConnection ) =
24+ let private createReadCommand ( connection : NpgsqlConnection ) =
2525 let cmd = connection.CreateCommand(
2626 CommandText = " SELECT id, randomnumber FROM world WHERE id = @Id"
2727 )
28- let id = cmd.CreateParameter (
28+ let id = NpgsqlParameter < int > (
2929 ParameterName = " @Id" ,
3030 DbType = DbType.Int32,
31- Value = Random.Shared.Next( 1 , 10001 )
31+ TypedValue = Random.Shared.Next( 1 , 10001 )
3232 )
3333 cmd.Parameters.Add( id) |> ignore
3434 cmd
3535
36- let private readSingleRow ( cmd : DbCommand ) =
36+ let private readSingleRow ( cmd : NpgsqlCommand ) =
3737 task {
3838 use! rdr = cmd.ExecuteReaderAsync( CommandBehavior.SingleRow)
3939 let! _ = rdr.ReadAsync()
@@ -83,12 +83,21 @@ module Db =
8383 | q ->
8484 q
8585
86- let private generateParameters ( results : World []) ( command : DbCommand ) =
86+ // fill cache
87+ let _ = [| 0 .. maxBatch |] |> Array.map batchUpdateString
88+
89+ let private paramNames =
90+ seq { 0 .. maxBatch* 2 }
91+ |> Seq.map ( fun i -> struct ( $" @Rn_{i}" , $" @Id_{i}" ))
92+ |> Seq.toArray
93+
94+ let private generateParameters ( results : World []) ( command : NpgsqlCommand ) =
8795 for i in 0 .. results.Length-1 do
8896 let randomNumber = Random.Shared.Next( 1 , 10001 )
89- let random = command.CreateParameter( ParameterName = $" @Rn_{i}" , DbType = DbType.Int32, Value = randomNumber)
97+ let struct ( rnParamName , idParamName ) = paramNames[ i]
98+ let random = NpgsqlParameter< int>( ParameterName = rnParamName, DbType = DbType.Int32, TypedValue = randomNumber)
9099 command.Parameters.Add( random) |> ignore
91- let id = command.CreateParameter ( ParameterName = $ " @Id_{i} " , DbType = DbType.Int32, Value = results[ i]. id)
100+ let id = NpgsqlParameter < int > ( ParameterName = idParamName , DbType = DbType.Int32, TypedValue = results[ i]. id)
92101 command.Parameters.Add( id) |> ignore
93102 results[ i] <- { results[ i] with randomnumber = randomNumber }
94103
0 commit comments