Proprietà SqlCeCommand.Transaction
Ottiene o imposta la transazione in cui viene eseguito l'oggetto SqlCeCommand.
Spazio dei nomi System.Data.SqlServerCe
Assembly: System.Data.SqlServerCe (in System.Data.SqlServerCe.dll)
Sintassi
'Dichiarazione
Public Property Transaction As SqlCeTransaction
Get
Set
'Utilizzo
Dim instance As SqlCeCommand
Dim value As SqlCeTransaction
value = instance.Transaction
instance.Transaction = value
public SqlCeTransaction Transaction { get; set; }
public:
property SqlCeTransaction^ Transaction {
SqlCeTransaction^ get ();
void set (SqlCeTransaction^ value);
}
member Transaction : SqlCeTransaction with get, set
function get Transaction () : SqlCeTransaction
function set Transaction (value : SqlCeTransaction)
Valore proprietà
Tipo: System.Data.SqlServerCe.SqlCeTransaction
Classe SqlCeTransaction. Il valore predefinito è nullriferimento Null (Nothing in Visual Basic)..
Osservazioni
Non è possibile impostare la proprietà Transaction se è già impostata su un valore specifico e il comando si trova in fase di esecuzione. Se si imposta la proprietà della transazione di un oggetto SqlCeTransaction non connesso allo stesso oggetto SqlCeConnection dell'oggetto SqlCeCommand, viene generata un'eccezione al successivo tentativo di eseguire un'istruzione.
Se l'oggetto SqlCeCommand viene eseguito con SqlCeTransaction impostato su nullriferimento Null (Nothing in Visual Basic)., il comando viene eseguito in modalità Autocommit. Di conseguenza ogni istruzione viene eseguita nella propria transazione.
Esempi
Dim conn As New SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'")
conn.Open()
' Start a local transaction
'
Dim tx As SqlCeTransaction = conn.BeginTransaction()
' By default, commands run in auto-commit mode;
'
Dim cmd1 As SqlCeCommand = conn.CreateCommand()
' You may create multiple commands on the same connection
'
Dim cmd2 As SqlCeCommand = conn.CreateCommand()
' To enlist a command in a transaction, set the Transaction property
'
cmd1.Transaction = tx
Try
cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')"
cmd1.ExecuteNonQuery()
' Auto-commited because cmd2 is not enlisted in a transaction
'
cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')"
cmd2.ExecuteNonQuery()
' This will cause referential constraint violation
'
cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1"
cmd1.ExecuteNonQuery()
' Commit the changes to disk if everything above succeeded
'
tx.Commit()
Catch
tx.Rollback()
Finally
conn.Close()
End Try
SqlCeConnection conn = new SqlCeConnection("Data Source = MyDatabase.sdf; Password ='<pwd>'");
conn.Open();
// Start a local transaction
//
SqlCeTransaction tx = conn.BeginTransaction();
// By default, commands run in auto-commit mode;
//
SqlCeCommand cmd1 = conn.CreateCommand();
// You may create multiple commands on the same connection
//
SqlCeCommand cmd2 = conn.CreateCommand();
// To enlist a command in a transaction, set the Transaction property
//
cmd1.Transaction = tx;
try
{
cmd1.CommandText = "INSERT INTO Shippers ([Company Name]) VALUES ('Northwind Traders')";
cmd1.ExecuteNonQuery();
// Auto-commited because cmd2 is not enlisted in a transaction
//
cmd2.CommandText = "INSERT INTO Employees ([Last Name], [First Name]) VALUES ('Decker', 'Barbara')";
cmd2.ExecuteNonQuery();
// This will cause referential constraint violation
//
cmd1.CommandText = "DELETE FROM Products WHERE [Product ID] = 1";
cmd1.ExecuteNonQuery();
// Commit the changes to disk if everything above succeeded
//
tx.Commit();
}
catch (Exception)
{
tx.Rollback();
}
finally
{
conn.Close();
}