在多个不同的带有 EF core 的 DB 环境中,需要访问 Connection 状态

问题描述

在用于 EF Core 3.1 的具有不同数据库sql Server、Oracle 等)的项目中,我有一个基类,每个数据库的顶级类都源自该基类。主要问题是我无法访问底层数据库的连接状态。

重点不是为每种数据库类型重写基本代码 - 只是差异。

基本代码与此类似。为清楚起见,我删除了多余的部分。

public class CNAdapterBase<Provider,ConnectStrBuilderType,CommandType> 
{
    private readonly Provider _dbProvider;

    private string _connectionString;
    private ConnectStrBuilderType _connectStr;
    private CommandType _command;
    ....

}

public class CNMSsql : CNAdapterBase<sqlConnection,sqlConnectionStringBuilder,sqlCommand>
{
     ...
}

与上面类似的代码用于 Oracle 等

任何可行的建议将不胜感激。

解决方法

所有 ADO.NET Connection 对象都应该从 System.Data.Common.DbConnection 派生,而 Command 对象应该从 System.Data.Common.DbCommand 派生。

因此,您可以在“适配器”的(非通用)基类中拥有这些抽象基类的实例。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...