How to use "use" binding in SqlTransaction

In MSSQL Server, I have a database with a name TestDBthat contains one table with three columns (Id, FirstName, LastName) with a name TestTable. To insert strings in TestTable, I declared type

type Person = { Id:int; FirstName:string; LastName:string }

two methods 1) Parameters and 2) Transaction

let Parameters(person:Person) = 
    [|
        SqlParameter("@Id", person.Id)
        SqlParameter("@FirstName", person.FirstName)
        SqlParameter("@LastName", person.LastName)
    |]          

let Transaction(tsql, sqlcon, sqltran, sqlparam) =        
    let cmd = new SqlCommand(tsql, sqlcon, sqltran);
    for p in sqlparam do
        cmd.Parameters.Add(p) |> ignore
    cmd

in the main method of my console application I used type and methods in this way

let population = [{Person.Id = 1; Person.FirstName = "Emon1"; Person.LastName = "Haque1"}
                  {Person.Id = 2; Person.FirstName = "Emon2"; Person.LastName = "Haque2"}]

let query = @"INSERT INTO TestTable VALUES(@Id, @FirstName, @LastName)"
let conStr = @"server=EMON; database=TestDB; user=TestUser; password=TestPass"      
use con = new SqlConnection(conStr)
con.Open()
let trans = con.BeginTransaction()

try
    population
    |> List.iter(fun x -> Transaction(query, con, trans, Parameters(x)).ExecuteNonQuery() |> ignore)
    |> trans.Commit
with
    | exn -> trans.Rollback()

I used useonce for SqlConnectionin the main method.

Should I use it for SqlCommandin the function Transaction, con.BeginTransaction()and in case of a transaction call, when it returns SqlCommandin the main method or use contakes care of all?

+4
source share
1 answer

#, use using #. , Dispose. , use, Dispose .

.NET API . StreamReader Stream, , .

, API , , .

, BeginTransaction, , , , . use trans, , , BCL .

+3

Source: https://habr.com/ru/post/1661992/


All Articles