【问题标题】:SubSonic-based app that connects to multiple databases连接到多个数据库的基于 SubSonic 的应用程序
【发布时间】:2010-01-16 04:16:08
【问题描述】:

我目前开发了一个连接到 SQL Server 2005 数据库的应用程序,因此我的 DAL 对象是使用来自该数据库的信息生成的。

还可以连接到具有相同表结构的 Oracle 和 MySQL 数据库(除了字段的正常差异,例如 SQL Server 中的 varbinary(max) 和 Oracle 中的 BLOB 等) .为此,我已经为应用程序将在其上运行的不同数据库定义了多个连接字符串和多个 SubSonic 提供程序。

我的问题是,如果我使用 SQL Server 数据库生成对象,生成的对象是否应该与其他数据库透明地工作,或者我是否需要为我使用的每个数据库引擎生成不同的 DAL?在执行这些操作时,我是否应该注意可能遇到的任何错误?

提前感谢您对此问题的任何建议。

【问题讨论】:

    标签: subsonic subsonic2.2


    【解决方案1】:

    顺便说一句,我正在使用 SubSonic 2.2....

    从我目前能够测试的情况来看,我看不出有一种简单的方法来实现我想要做的事情。

    对我来说,理想的情况是使用 SQL Server 生成 SubSonic 对象,并且只需在运行时为其创建正确的 Provider 及其连接字符串,就可以动态切换到 MySQL。我的应用程序可以正确地从 SQL Server 连接到 MySQL 数据库,但是由于 SubSonic 在内部生成表单的查询,因此应用程序会失败

    SELECT * FROM dbo.MyTable
    

    显然 MySQL 不支持。我还注意到使用方括号 ([]) 将表名括起来的查询,因此似乎有许多因素会限制在多个数据库引擎中使用一个提供程序。

    我想我唯一的其他选择是使用多个生成的提供程序来解决它,尽管我必须承认,知道我的项目中将有 N 个基本相同的类的副本,这让我感到不舒服。

    如果其他人有类似经历,我真的很想听听他们的意见。一旦我整理好所有内容并为我的项目工作,我一定会发布我的结果。

    在 3.0 中是否有任何更改?如果在这件事上生活更轻松,这绝对是我升级的一个值得的理由......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多