Az EF EntityConnection-t és ehhez kapcsolódó EntityTransactiont használ. (Ezek a szabványos DbConnection és DbTransaction osztályokból származnak), az SQL query-khez pedig SqlConnection és SqlTransaction kellene.
Connection:
Ez a könnyebbik dolog. Fogjuk az EF DataContextjét, és a Connection objektumának a 'StoreConnection' property-je alatt megtaláljuk az SqlConnection-t. (Alapból DbConnection, de ha SQL servert használunk, akkor SqlConnection példányt találunk itt.)
System.Data.EntityClient.EntityConnection ec = (System.Data.EntityClient.EntityConnection)Context.Connection;
SqlConnection conn = (SqlConnection)ec.StoreConnection;
Transaction:
Ez a nehezebbik, mivel ugyan itt is létezik a 'StoreTransaction' property az EntityTransaction-ön belül, de PRIVATE!
Alapos guglizás után sem találtam semmilyen megoldást ennek kinyerésére, így maradt a Reflection.
_sqlTransaction = (SqlTransaction)_transaction.GetType().GetProperty("StoreTransaction", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(_transaction, new object[] { });
Nincsenek megjegyzések:
Megjegyzés küldése