我继承了使用OleDb连接数据库的C#(Windows 10,dot net 2.0)数据库应用程序的维护。
OleDb已被使用,因为它允许以前版本的应用程序只需更改连接字符串即可在数据库(MS Access,SQL Server,Oracle等)之间切换。
现在应用程序将被移动到PostGres数据库。我已经成功设法使用Npgsql.NpgsqlConnection或System.Data.OleDb.OleDbConnection连接到数据库(使用此处的Intillisoft postgres数据提供程序... http://www.pgoledb.com)
OleDb提供者要求收取过高的费用(该申请由慈善机构主办,我在自愿的基础上开展工作)。所以我将不得不使用Npgsql.NpgsqlConnection类,但是在应用程序中传递了几百个OleDbConnection对象。
我的目标是(按重要性排列)
我想就实现这些目标的最佳方法提出一些建议。我希望有一些方法来创建我自己的类OleDbConnection,它将链接到System.Data.OleDb.OleDbConnection或Npgsql.NpgsqlConnection,具体取决于参数。这将保持数据源灵活性并将代码更改保持在最低限度 - 但我不知道这是否可行,更不用说如何做了!
由于
答案 0 :(得分:2)
当您编程接口时,切换DB供应商变得更加简单。在将程序的核心逻辑迁移到其他RDBMS之前,需要先修复特定连接类型的实例。
数据库连接的通用接口是IDbConnection:OleDbConnection和NpgsqlConnection都实现它。浏览源代码树,将所有出现的OleDbConnection替换为IDbConnection,然后重新编译项目。您可能需要将其他类型转换为接口,例如OleDbCommand到IDbCommand。
如果此步骤成功(应该是),则剩余的迁移将更加简单。如果重新编译时出现错误,则需要询问有关转换特定于OleDB的代码的具体问题。