我继承了使用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对象被传递。
我的目标是(按重要性排序)
将应用程序迁移到Postgre
尽量减少对代码的更改
保持在数据源之间切换的能力(如果可能)
我想就实现这些目标的最佳途径提出一些建议。我希望有办法创建自己的类oledbconnection,它可以链接到system.data.oledb.oledbconnection或npgsql.npgsqlconnection,具体取决于参数。这将保持数据源的灵活性,并将代码更改保持在最低限度,但我不知道这是否可能,更不用说怎么做了!
谢谢

最佳答案

当您编程到接口时,切换数据库供应商变得简单得多。在将程序的核心逻辑迁移到不同的rdbms之前,需要修复传递特定连接类型实例的问题。
DB连接的公共接口是IDBConnection:OLEDBConnection和NPGSQLConnection都实现了它。浏览源代码树,用IDBConnection替换所有出现的OLEDBConnection,然后重新编译项目。您可能需要将其他类型转换为接口,例如oledbcommand到idbcommand。
如果这个步骤成功(应该是成功的),剩下的迁移将简单得多。如果重新编译时出现错误,则需要询问有关将特定代码转换为OLEDB的特定问题。

关于c# - 迁移C#应用程序以连接到PostGres数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46053692/

10-15 19:38
查看更多