【问题标题】:Migrating a C# application to connect to PostGres database [closed]迁移 C# 应用程序以连接到 PostGres 数据库 [关闭]
【发布时间】:2017-09-05 19:32:18
【问题描述】:

我继承了使用 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 对象。

我的目标是(按重要性排序)

  1. 将应用程序迁移到 PostGre
  2. 对代码进行最少的更改
  3. 保持在数据源之间切换的能力(如果可能)

我想要一些关于实现这些目标的最佳方法的建议。我希望有某种方法可以创建我自己的名为 OleDbConnection 的类,该类将根据参数链接到 System.Data.OleDb.OleDbConnection 或 Npgsql.NpgsqlConnection。这将保持数据源的灵活性并将代码更改保持在最低限度 - 但我不知道这是否可能,更不用说如何做到了!

谢谢

【问题讨论】:

  • 虽然它需要你改变一些代码,(如果应用程序设计得好的话就不会太多)但是实体框架可能是一个不错的选择。
  • “如果应用程序设计得好,就不会太多” - “但是有数百个 OleDbConnection 对象被传递” - 所以我不会赌一毛钱,@MarkBaijens跨度>
  • 是的,听起来不是一个很好的设计。重构工具仍然可以帮助解决其中的一些问题。
  • 您可以考虑使用ODBC,它可以轻松更改提供者

标签: c# database postgresql database-migration


【解决方案1】:

当您对接口进行编程时,切换 DB 供应商会变得简单得多。在将程序的核心逻辑迁移到不同的 RDBMS 之前,您需要修复传递特定连接类型的实例。

数据库连接的常用接口是 IDbConnection:OleDbConnection 和 NpgsqlConnection 都实现了它。浏览您的源代码树,将所有出现的 OleDbConnection 替换为 IDbConnection,然后重新编译项目。您可能需要将其他类型转换为接口,例如OleDbCommand 到 IDbCommand。

如果这一步成功(应该),剩下的迁移会简单很多。如果重新编译时出现错误,您需要询问有关转换特定于 OleDB 的代码的具体问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多