这是我目前的设置:
Public Interface IDatabase
Function CreateParameter(name as String, dbType as <dbTypeEnumeration>)
End Interface
Public Class OracleDatabaseRepository
Implements IDatabase
Public Function CreateParameter(ByVal name As String, ByVal dbtype As <dbTypeEnumeration>) As Object
End Function
End Class
Public Class SQLServerRepository
Implements IDatabase
Public Function CreateParameter(ByVal name As String, ByVal dbtype As <dbTypeEnumeration>) As Object
End Function
End Class
Public Class DatabaseService
Private _rep As IDatabase
Sub New(ByRef rep As IDatabase)
_rep = rep
End Sub
Public Function CreateParameter(ByVal name As String, ByRef dbtype As <dbTypeEnumeration>) As Object
_rep.CreateParameter(name, dbtype)
End Function
End Class
这里的问题是 dbTypeEnumeration 到底是什么。在上面的示例中,它只是我的问题所在的占位符。由于我们同时使用 Oracle 和 SQL Server 数据库,因此 DbType 因所使用的数据库而异。对于 Oracle,OracleClient 对象有自己的 OracleDbType 枚举类型。SQL Server 也有自己的枚举。
我的问题是:是否可以根据注入 DatabaseService 构造函数的存储库来显示那些特定于数据库的枚举?如果没有,最好的方法是什么?我想分离两个数据库,共享逻辑,并允许未来的开发,将接口作为该开发的代码契约。