问题描述
在用于 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 派生。
因此,您可以在“适配器”的(非通用)基类中拥有这些抽象基类的实例。