Question
I recently migrated my solution to .net 10-rc.1.
If I migrate Ef 9 to Ef 10-rc.1 as well, using both EF and Dapper in the same transaction raises with this error: System.NotSupportedException
Implicit distributed transactions have not been enabled. If you're intentionally starting a distributed transaction, set TransactionManager.ImplicitDistributedTransactions to true.
Both EF and Dapper are using the same connection string, dapper uses a separate SqlConnection.
Note that it works perfectly well if I keep my solution using Ef9 with .net 9 or Ef9 with .net 10-rc.1.
Dapper version is the same in all setups.
I didn't find any references of a such a change of behavior in the documentation: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/breaking-changes.
Is there any change Ef 10 that is is at the origin of this new behavior ? Do you have some recommendations ?
Your code
I Cannot provide the source code for confidentiality reasons.
Stack traces
System.NotSupportedException: Implicit distributed transactions have not been enabled. If you're intentionally starting a distributed transaction, set...
System.NotSupportedException
Implicit distributed transactions have not been enabled. If you're intentionally starting a distributed transaction, set TransactionManager.ImplicitDistributedTransactions to true.
at System.Transactions.DtcProxyShim.DtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, Object managedIdentifier, Boolean& nodeNameMatches, Byte[]& whereabouts, ResourceManagerShim& resourceManagerShim)
at System.Transactions.Oletx.DtcTransactionManager.Initialize()
at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory()
at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropagationToken(Byte[] propagationToken)
at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
at System.Transactions.Transaction.Promote()
at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
at Microsoft.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts)
at Microsoft.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
at Microsoft.Data.SqlClient.ConnectionPool.WaitHandleDbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction)
at Microsoft.Data.SqlClient.ConnectionPool.WaitHandleDbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
at Microsoft.Data.SqlClient.SqlConnection.InternalOpenAsync(SqlConnectionOverrides overrides, CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at Dapper.SqlMapper.QueryMultipleAsync(IDbConnection cnn, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 1040
Verbose output
EF Core version
10.0.0-rc.1.25451.107
Database provider
No response
Target framework
10.0.0-rc.1.25451.107
Operating system
No response
IDE
No response
Question
I recently migrated my solution to .net 10-rc.1.
If I migrate Ef 9 to Ef 10-rc.1 as well, using both EF and Dapper in the same transaction raises with this error: System.NotSupportedException
Implicit distributed transactions have not been enabled. If you're intentionally starting a distributed transaction, set TransactionManager.ImplicitDistributedTransactions to true.
Both EF and Dapper are using the same connection string, dapper uses a separate SqlConnection.
Note that it works perfectly well if I keep my solution using Ef9 with .net 9 or Ef9 with .net 10-rc.1.
Dapper version is the same in all setups.
I didn't find any references of a such a change of behavior in the documentation: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/breaking-changes.
Is there any change Ef 10 that is is at the origin of this new behavior ? Do you have some recommendations ?
Your code
Stack traces
Verbose output
EF Core version
10.0.0-rc.1.25451.107
Database provider
No response
Target framework
10.0.0-rc.1.25451.107
Operating system
No response
IDE
No response