在 ADO.NET (Microsoft.Data.Sql) 中使用 EF Core 6 数据库连接
Use EF Core 6 db connection in ADO.NET (Microsoft.Data.Sql)
我有一个 ASP.NET Core 应用程序,我在其中将 EF Core 与 MSSQL 结合使用。在一个 table 的已用数据库中,有一列包含大约 2MB 的二进制数据值。我不想在内存中实现它,而是想将该数据流式传输给用户,因此它不会最终出现在 LOH(大对象堆)中。我发现为了做到这一点,我可以使用 ADO.NET,因为它支持列值流。
大多数时候我对使用 EF Core 非常满意,但在这种情况下我想回退到 ADO.NET。我知道现在的 EF Core 依赖于 Microsoft.Data.Sql 而不是 System.Data.Sql,所以当我找到 GetDbConnection() (在
Microsoft.EntityFrameworkCore.Relational assembly) 方法我希望它的 return 类型是 Microsoft.Data.SqlClient.SqlConnection ,它可以很好地与 Microsoft.Data.SqlClient.SqlCommand 构造函数一起使用,但实际上我得到的是是 System.Data.Common.DbConnection.
问题是可以将 System.Data.Common.DbConnection(我从 EF Core 获取)转换为 Microsoft.Data.SqlClient.SqlConnection(我想使用 Microsoft.Data.Sql 使用)吗?
好吧,我很尴尬。原来在使用 Sql 时你可以直接转换它并且它有效。
var mdsSqlConnection = (Microsoft.Data.SqlClient.SqlConnection)_dbContext.Database.GetDbConnection();
我有一个 ASP.NET Core 应用程序,我在其中将 EF Core 与 MSSQL 结合使用。在一个 table 的已用数据库中,有一列包含大约 2MB 的二进制数据值。我不想在内存中实现它,而是想将该数据流式传输给用户,因此它不会最终出现在 LOH(大对象堆)中。我发现为了做到这一点,我可以使用 ADO.NET,因为它支持列值流。
大多数时候我对使用 EF Core 非常满意,但在这种情况下我想回退到 ADO.NET。我知道现在的 EF Core 依赖于 Microsoft.Data.Sql 而不是 System.Data.Sql,所以当我找到 GetDbConnection() (在 Microsoft.EntityFrameworkCore.Relational assembly) 方法我希望它的 return 类型是 Microsoft.Data.SqlClient.SqlConnection ,它可以很好地与 Microsoft.Data.SqlClient.SqlCommand 构造函数一起使用,但实际上我得到的是是 System.Data.Common.DbConnection.
问题是可以将 System.Data.Common.DbConnection(我从 EF Core 获取)转换为 Microsoft.Data.SqlClient.SqlConnection(我想使用 Microsoft.Data.Sql 使用)吗?
好吧,我很尴尬。原来在使用 Sql 时你可以直接转换它并且它有效。
var mdsSqlConnection = (Microsoft.Data.SqlClient.SqlConnection)_dbContext.Database.GetDbConnection();