Search code examples
.netsql-serverentity-frameworktransactionscopedistributed-transactions

TransactionScope and SQL Server Compact


SQL Server Compact doesn't support distributed transactions. So if there are more than one connection inside TransactionScope - the exception is thrown. Is there any way to setup ADO.NET provider to use one connection for the same connection string?

I understand I can use usual transactions through connection.BeginTransaction but TransactionScope is preferable for me.

UPDATE.
Sorry, I didn't mention I work with Entity Framework, so I have no control on SQL Command. I may just pass connection string. And by some reason several connections objects created for one connection string inside TransactionScope.


Solution

  • Updated answer (code sample from here):

    using (var context = new MyContext())
    {
        using (var txscope = new TransactionScope())
        {
            context.Connection.Open();
            // do query 1
            // do query 2
        }
    }
    

    Update

    Another solution, as you said, is to create a connection object and use it in constructors for the Object Context.

    More information about when Entities opens new connection.