【发布时间】:2016-06-03 10:41:37
【问题描述】:
我有一种情况,我需要创建一个支持多个数据库的应用程序。多数据库意味着客户端首先可以使用任何数据库,如Oracle、SQL Server、MySQL、PostgreSQL。
我试图使用像 NHibernate 或 MyBatis 这样的 ORM。但他们有其局限性,需要专业知识才能使用。
所以我决定使用 Microsoft 提供的 Data Providers,例如 ADO.NET、OLEDB、ODP.NET 等。
有什么办法可以让我的数据库逻辑对所有数据库都保持一致?我已经尝试过IDbConeection、IDbCommand 等,但在 Oracle(参考光标)的情况下它们会出现问题。
我有什么办法可以做到这一点?一些链接或指南将不胜感激。
编辑:
DBType 存在问题,因为它们是枚举定义不同的数据提供者。
【问题讨论】:
-
您是否考虑过使用实体框架代码优先方法?
-
@JCM Entity 对 oracle 版本的支持不好。
-
我认为你最好的选择仍然是使用像实体框架这样的 ORM。是的,他们有局限性,是的,他们需要专业知识(虽然不是太多),但谁说支持多个数据库会很容易?在复杂的情况下,您可能会使用存储过程或只是根据当前提供程序有条件地执行代码(但仅限于复杂情况下)。
-
我建议您继续使用 nHibernate,因为它最适合 Oracle,并且它是大多数 Web 应用程序最推荐的 ORM。它还可以帮助您避免处理特定于数据库的查询的麻烦。一旦您熟悉了它,它将成为您使用 Query Builder 组合域语言的强大工具。你说它有限制,你能告诉我们一些影响你考虑的限制吗?
-
EF 在 Oracle 中运行良好,但仍然使用托管驱动程序...
标签: c# asp.net orm ado.net multi-database