2010-01-16 96 views
1

我目前开发的应用程序连接到SQL Server 2005数据库,所以我的DAL对象使用该数据库中的信息生成。基于SubSonic的应用程序,连接到多个数据库

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

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

在此先感谢您对此问题的任何建议。

回答

0

我使用的方式亚音速2.2 ....

从我已经能够到目前为止测试,我看不到一个简单的方法来达到我想要做的。

对于我来说,理想情况是使用SQL Server生成SubSonic对象,例如只需在运行时为其创建正确的提供程序及其连接字符串即可动态切换到MySQL。我到了一个地步,我的应用程序将正确地从SQL Server连接到MySQL数据库,但也正是因为亚音速内部生成的形式

SELECT * FROM dbo.MyTable 

其MySQL不明显支持的查询应用程序失败的一个点。我还注意到包含括号([])的表名的查询,因此似乎有很多因素会限制沿着多个数据库引擎使用一个Provider。

我想我唯一的其他选择是将它与多个生成的提供者进行整理,但我必须承认,这并不让我感到舒服,因为我知道我的项目中将有N个基本相同的类。

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

在3.0中有这个变化吗?这对我来说肯定是一个值得升级的理由,如果生活在这件事情上更容易...

相关问题