Sql 建议另一种组织/构建数据库解决方案的方法
我们使用的是VisualStudio2010,但这是VS2003最先构思的 我会向我的团队提出最好的建议。当前的设置几乎让我呕吐。这是一个C#解决方案,大多数项目都包含.sql文件。因为我们支持Microsoft、Oracle和Sybase,所以我们自制了一个预处理器,很像C预处理器,只是替换是由自制的C#程序执行的,而不使用Sql 建议另一种组织/构建数据库解决方案的方法,sql,visual-studio-2010,vendor-neutrality,Sql,Visual Studio 2010,Vendor Neutrality,我们使用的是VisualStudio2010,但这是VS2003最先构思的 我会向我的团队提出最好的建议。当前的设置几乎让我呕吐。这是一个C#解决方案,大多数项目都包含.sql文件。因为我们支持Microsoft、Oracle和Sybase,所以我们自制了一个预处理器,很像C预处理器,只是替换是由自制的C#程序执行的,而不使用yacc和类似的工具#ifdef用于条件宏定义,是的-宏就是这样做的。一个宏可以扩展到另一个或两个宏,但最终应该终止。只有宏中有#ifdef——其余类似SQL的代码只使用这
yacc
和类似的工具<代码>#ifdef用于条件宏定义,是的-宏就是这样做的。一个宏可以扩展到另一个或两个宏,但最终应该终止。只有宏中有#ifdef
——其余类似SQL的代码只使用这些宏
现在,各种配置:Debug、MNDebug、MNRelease、Release、SQL\u APPLY\u ALL、SQL\u APPLY\u MSFT、SQL\u APPLY\u ORACLE、SQL\u APPLY\u SYBASE、SQL\u BUILD\u OUTPUT\u ALL、SQL\u COMPILE
,以及另外两种配置
另外:任何CPU、混合平台、Win32
让我抓狂的是必须正确配置它,从12 x 3=36
配置中选择正确的配置,以及必须根据数据库类型替换数据库名称:config、main或gateway。我认为配置应该简化为调试、发布和SQL应用。而且,使用0、1和2似乎很简单。。。
最后,我认为我打算为3种类型的供应商构建或不构建3种类型的数据库,应该只配置一个tic-tac趾板,如:
XOX
OOX
XXX
在这种情况下,它意味着构建MSFT+CONFIG、所有SYBASE和所有网关
尽管如此,使用一个文本文件、一个预处理器和许多配置的整体设备似乎非常笨重。现在是2010年,一定有人会有一个非常干净和/或有创意的工具/解决方案。唯一的优点是现有的宏集合已经过良好的测试
您是否曾经编写过适用于多家供应商的SQL?你是怎么做到的
SqlVars.txt(30个用户中的每一个都会复制一个模板,并根据自己的需要进行修改): 您是否曾经编写过适用于多家供应商的SQL?你是怎么做到的 我用过。检查。由于您使用的是VS2010,因此也可以进行检查。
ORM使您能够高度抽象数据库。仍然会有一些查询需要分别为每个RDBMS手工编制,但根据我的经验,这还不到10% 对于其他商业和开源ORM,请查看Wikipedia文章: 编辑:再交易平台评论: 我从未参与过这样的项目,所以我真的无法给出任何有意义的建议。一般来说,ORM可以帮助您整合数据访问层,并最大限度地减少对RDBMS特定代码的需求。大多数ORM也可以自动生成数据库 对我来说,这场比赛的表现惩罚是什么是不可能的。您应该使用商业和开源的顶级ORM进行一些测试,然后做出决定(微软可能有兴趣与您市场上使用实体框架的公司合作) 另外,不要忘记,在现有产品中引入ORM是很困难的,所以这是您需要考虑的另一个问题 您是否曾经编写过这样的SQL 是否适用于多个供应商?怎么 是你干的吗 基本上,您可以通过在数据层和任何其他层之间添加一层抽象来实现。然后你有两个选择:
您应该考虑重构当前库,以便所有数据库交互都在单个库中完成,并且完全通过接口将其抽象出来。这可以通过多个发布周期逐步完成,直到最终所有调用都通过一个与数据库无关的接口或抽象类,在这个接口或抽象类中,您有工厂方法为相关数据库加载适当的具体类
有关更多信息:// This is the default parameters file and should not be changed.
// You can overwrite any of these parameters by copying the appropriate
// section to override into SqlVars.txt and providing your own information.
//Build types are 0-Config, 1-Main, 2-Gateway
BUILD_TYPE=1
REMOVE_COMMENTS=1
// Login information used when applying to a Microsoft SQL server database
SQL_APPLY_MSFT_version=SQL2005
SQL_APPLY_MSFT_database=msftdb
SQL_APPLY_MSFT_server=ABC
SQL_APPLY_MSFT_user=msftusr
SQL_APPLY_MSFT_password=msftpwd
// Login information used when applying to an Oracle database
SQL_APPLY_ORACLE_version=ORACLE10g
SQL_APPLY_ORACLE_server=oradb
SQL_APPLY_ORACLE_user=orausr
SQL_APPLY_ORACLE_password=orapwd
// Login information used when applying to a Sybase database
SQL_APPLY_SYBASE_version=SYBASE125
SQL_APPLY_SYBASE_database=sybdb
SQL_APPLY_SYBASE_server=sybdb
SQL_APPLY_SYBASE_user=sybusr
SQL_APPLY_SYBASE_password=sybpwd
... (THIS GOES ON)