我正在使用MySQL Connector尝试新的Entity Framework Core。
我可以获得有效的DbContext
并写入数据库,以便所有内容都已正确设置。
我需要从Connection
获取DbContext
,因为我必须在应用程序中使用connection.Open()
语句中的try
进行测试。如果没有有效连接,控制台应用程序应尝试启动MySQL服务器并重试。
如何从Connection
获取DbContext
?
在context.Connection
之前的EF6之前。 EF6之后的context.Database.Connection
。
似乎最新版本已从EFCore中删除。
答案 0 :(得分:29)
Microsoft.EntityFrameworkCore.Relational
(https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Relational/)包为此提供了扩展方法 - 您可以使用dbContext.Database.OpenConnection()
或dbContext.Database.GetDbConnection()
来获取DbConnection
对象。
注意:如果您安装了Microsoft.EntityFrameworkCore.SqlServer
,那么您不必明确安装此软件包
答案 1 :(得分:1)
您可以执行以下操作:
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();
}
通过这样做,您将避免在上下文之外使用命令时可能出现的任何问题。