To add some details - if you need to explicitly mark the scope where command is valid (to get exactly the same behavior as in your C# example, where cmd
id disposed of before calling Commit
) you can write:
use dbTrans = con.BeginTransaction()
( use cmd = con.CreateCommand()
cmd.BlahBlahBlah() )
dbTrans.Commit()
The scope is just a part of expression where the symbol is defined, so you can make it explicit using parentheses.
using
is just an F# function that you could use before special syntax using use
was added. Just FYI, the syntax looks like this:
using (con.BeginTransaction()) (fun dbTrans ->
using (con.CreateCommand()) (fun cmd ->
cmd.BlahBlahBlah() )
dbTrans.Commit() )
Writing the code using use
is definitely a better idea (but you can define your functions like using
to encapsulate more interesting behavior - e.g. transaction).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…