Hi,
Our existing projects connect a database via a traditional way, not Entity Framework. Is it possible to access ONE database server by both Entity Framework and the way?
When connecting the DB, our existing project threw an exception that it has been already opened.
Best regards,
3 Answer(s)
-
0
Hi,
That is possible. Can you share the code where you get the exception ?
-
0
Hi,
Thank you for your reply.
Our code is simple, just implement sqlCoccenction like
Conn.Open();
Our existing project opens DB twice and at the second time, we have received an exception even though the first DB connection has been already closed.
Below is the exception message.
System.Transactions.TransactionAbortedException was unhandled by user code HResult=-2146233087 Message=The transaction has aborted. Source=System.Transactions StackTrace: at System.Transactions.TransactionStateAborted.CheckForFinishedTransaction(InternalTransaction tx) at System.Transactions.EnlistableStates.Promote(InternalTransaction tx) at System.Transactions.Transaction.Promote() at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) at System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts) at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx) at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction) at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 retry) at System.Data.SqlClient.SqlConnection.Open() at *******SystemDB.Open() in *******\Utilities\DB\SystemDB.cs:line 585 at *******SystemDB.ExecuteStatement(IDbCommand cmd, StatementExecutor fn, String name, Boolean close) in *******\Utilities\DB\SystemDB.cs:line 711 at *******SystemDB.GetDataReader(IDbCommand cmd, CommandBehavior behaviour) in *******\Utilities\DB\SystemDB.cs:line 312 at *******SystemDB.GetDataReader(IDbCommand cmd) in *******\Utilities\DB\SystemDB.cs:line 291 at *******SystemDB.GetDataReader(String sprocName, Object parameters) in \Utilities\DB\SystemDB.cs:line 281 atData.DataStore.GetSchema(Int32 id) in \Individuals\Data\DataStore.cs:line 148 atIndivDbManager.<>c__DisplayClass1.<GetSchema>b__0() in *******\Individuals\IndivDbManager.cs:line 126 at *******Controllers.BaseController1.GetItem[T](GetItemFromDataStore
1 getItemFromDataStore, DateTime expireAt, T_CachedItemGroup cachedItemGroup, KeyExtension[] keyExtensions) in *******\Utilities\Controllers\BaseController.cs:line 271 at *******Controllers.BaseController1.GetItem[T](GetItemFromDataStore
1 getItemFromDataStore, T_CachedItemGroup cachedItemGroup, KeyExtension[] keyExtensions) in \Utilities\Controllers\BaseController.cs:line 254 atIndivDbManager.GetSchema(Int32 id) in *******\Individuals\IndivDbManager.cs:line 125 at *******GetDatabases(Int32 clientId) in *******\Database\Individuals\IndividualsDB.cs:line 72 at *******.IndividualsDbController.<>c__DisplayClass5_0.<GetDatabases>b__0() in **************\Database\Individuals\IndividualsDbController.cs:line 80 at *******Controllers.BaseController1.GetSetCachedItem[C_CachedItemType](Func
1 fetch, DateTime expireAt, TimeSpan expiry, T_CachedItemGroup cachedItemGroup, KeyExtension[] keyExtensions) in *******\Utilities\Controllers\BaseController.cs:line 105 at *******Controllers.BaseController1.GetSetCachedItem[C_CachedItemType](Func
1 fetch, TimeSpan expiry, T_CachedItemGroup cachedItemGroup, KeyExtension[] keyExtensions) in *******\Utilities\Controllers\BaseController.cs:line 93 at *******.IndividualsDbController.GetDatabases(IEnumerable1 clientIds) in **************\Database\Individuals\IndividualsDbController.cs:line 79 at *******.IndividualsDbController.GetDatabases(Int32 clientId) in **************\Database\Individuals\IndividualsDbController.cs:line 63 at *******.IndividualsDbController.GetDatabase(Int32 clientId, Int32 dbid) in **************\Database\Individuals\IndividualsDbController.cs:line 115 at *******.GetDataProvider() in *******.cs:line 80 at *******.GetActiveCampaigns() in *******.cs:line 99 at *******.Campaigns() in *******.cs:line 28 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult
2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.Best regards,
-
0
Hi,
Where do you open the connection with your existing system ? Is it in a application service or in a controller ?
I will try to produce same case in my test project.