1

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

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

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

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

4

1 回答 1

0

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

从到目前为止我能够测试的内容来看,我看不到一种简单的方法来实现我想要做的事情。

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

SELECT * FROM dbo.MyTable

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

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

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

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

于 2010-02-19T02:25:22.387 回答