我正在构建一个数据访问层,需要能够在不同环境中的两个提供者之间切换。
我该如何构建这个?我正在使用存储库模式,并且有一个CarRepository
类和一个Car
类。该类CarRepository
负责从数据库中保存、删除和加载。
我有一个Database
类,负责连接数据库,并执行查询(SqlCommand
为 SQL Server 发送一个)。底层数据库的 SQL 语法不同,参数语法也不同(SQL Server 使用@
,MySql 使用?
)。
我想要一种方法,可以让我的应用程序在两个平台上都运行。
显而易见的方法是制作 aMySqlCarRepository
和 a SqlServerCarRepository
,但这会带来大量的维护。这种情况有什么好的方法吗?也许保留一个包含不同 SQL 风格的 SQL 语句的静态字符串的静态类?(那么参数语法呢?)
欢迎任何建议
(请注意 ORM(Nhibernate、Linq2Sql 等)不是一个选项)