Reputation: 2716
I am trying the new Entity Framework Core with MySQL Connector.
I can get a valid DbContext
and write into the database so everything has been setup correctly.
I need to get the Connection
from the DbContext
because I have to test for it at application starting using a connection.Open()
inside a try
statement. If there is not a valid connection, the console app should try to start MySQL Server and retry.
How can I get the Connection
from the DbContext
?
Before EF6 by context.Connection
. After EF6 by context.Database.Connection
.
It seems the latest has been removed too from EFCore.
Upvotes: 80
Views: 88776
Reputation: 359
You can do the following :
using (SqlCommand cmd = (SqlCommand)database.GetDbConnection().CreateCommand())
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
if (database.CurrentTransaction != null)
{
cmd.Transaction = database.CurrentTransaction.GetDbTransaction();
}
By doing this you will avoid any problems can appear when using comands outside the context.
Upvotes: 17
Reputation: 6440
The Microsoft.EntityFrameworkCore.Relational
(https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/) package provides extension methods for this - you can use dbContext.Database.OpenConnection()
or dbContext.Database.GetDbConnection()
to get the DbConnection
object.
Note: if you have Microsoft.EntityFrameworkCore.SqlServer
installed then you don't have to explicitly install this package
Upvotes: 115