DevAdmin Blog

Blog di Ermanno Goletto (Microsoft MVP Directory Services - MCITP - MCTS - MCSA - MCP)
posts - 976, comments - 549, trackbacks - 8

My Links

News

Avatar

Curriculum Vitae

Visualizza il profilo di Ermanno Goletto su LinkedIn

Follow ermannog on Twitter


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Server Infrastructure Days 2013 - Milano - 18 e 19 Giugno


Logo SysAdmin.it SysAdmin.it Staff


Logo TechNet Forum TechNet Italia @ForumTechNetIt Follow TechNet Forum on Twitter


Logo MVP

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

Linq, SQL Server e transazioni

Il modo migliore per gestire in Linq una transazione è quello di utilizzare la classe TransactionScope utilizzando un codice del genere:

dim p As Product = Nothing

Using dc = DBDataContext()

    p = New Product()
    p.Code = “ABC”
    p.Description = “Product ABC”
    dc.Products.InsertOnSubmit(p)

    p = New Product()
    p.Code = “XYZ”
    p.Description = “Product XYZ”
    dc.Products.InsertOnSubmit(p)

  Using ts = New TransactionScope()

    dc.SubmitChanges()
    ts.Complete()

  End Using

End Using

Per ulteriori informazioni si veda LINQ to SQL: .NET Language-Integrated Query for Relational Data – Transactions.

Questo approccio estremamente semplice e lineare (il rollback avviene in assenza dell’invocazione del metodo Complete) ha però dei requisiti.

Nei casi in cui non è possibile configurare il DTC, ma si deve utilizzare un SQL Server 2000 è possibile gestire la transazione creandola tramite la connessione:

dim p As Product = Nothing

Using dc = DBDataContext()

  p = New Product() 
  p.Code = “ABC” 
  p.Description = “Product ABC” 
  dc.Products.InsertOnSubmit(p)

  p = New Product() 
  p.Code = “XYZ” 
  p.Description = “Product XYZ”
  dc.Products.InsertOnSubmit(p)

  dc.Connection.Open()

  Using ts = dc.Connection.BeginTransaction()

    dc.Transaction = ts

    Try

      dc.SubmitChanges()
      ts.Commit()

    Catch ex As Exception

      ts.Rollback()
      ‘Messaggio di errore

    End Try

   dc.Transaction = Nothing

  End Using

  dc.Connection.Close()

End Using

Print | posted on Thursday, May 12, 2011 6:13 PM | Filed Under [ Links Code, Snippets & Scripts Database .NET ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 2 and 3 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET