我目前开发了一个连接到SQL Server 2005数据库的应用程序,因此我的DAL对象使用来自该数据库的信息生成。
还可以连接到Oracle和MySQL数据库,所有数据库都具有相同的表结构(除了字段中的常规差异,例如SQL Server中的varbinary(max)和Oracle中的BLOB等) 。为此,我已经为应用程序将运行的不同数据库定义了多个连接字符串和多个SubSonic提供程序。
我的问题是,如果我使用SQL Server数据库生成对象,生成的对象是否应该与其他数据库透明地工作,还是需要为我使用的每个数据库引擎生成不同的DAL?我应该知道在执行这些操作时可能遇到的任何错误吗?
提前感谢您就此问题提出任何建议。
答案 0 :(得分:0)
我正在使用SubSonic 2.2 ......
到目前为止,我已经能够测试,我看不到一种简单的方法来实现我想要做的事情。
对我来说理想的情况是使用SQL Server生成SubSonic对象,并且只需在运行时为其创建正确的Provider及其连接字符串即可动态切换到MySQL。我得到了一个点,我的应用程序将从SQL Server正确连接到MySQL数据库,但由于SubSonic内部生成表单查询,因此应用程序失败了一点
SELECT * FROM dbo.MyTable
MySQL显然不支持。我还注意到用括号([])括起表名的查询,因此似乎有许多因素限制了一个Provider在多个数据库引擎中的使用。
我想我唯一的另一个选择是使用多个生成的提供程序对其进行排序,但我必须承认,在我的项目中我将拥有N个基本相同类的副本,这让我感到很自在。
如果他们有类似的经历,我真的很想听听其他人的意见。一旦我解决了所有问题并为我的项目工作,我一定会发布我的结果。
3.0中是否有任何改变?如果生活在这件事上变得更容易,那对我来说肯定是值得升级的理由......