我刚开始一份新工作并从地狱继承了这个项目。 地狱= {超过2年的时间表,过于复杂,同时使用oracle和sql server}
Oracle服务器中有100多个存储过程,每个存储过程都有一个IBatis SQL Map。 有些人共享相同的结果图。 DBA喜欢每天更改商店的操作,而不是告诉我。
问题: 是否有任何工具可以检查解决方案中的所有IBatis SQL Maps。 理想情况下,它会验证:
背景:我通常只使用SQL Server和SubSonic 2.2作为ORM。这样我只是执行一个命令,我的DAL是神奇地自动生成的,这样如果我需要的列丢失,我会得到一个很容易理解的编译时错误,而不是一个令人困惑的运行时错误。我可以在这里使用类似的工具吗?
感谢您的帮助!
答案 0 :(得分:1)
有一个名为Ibator的工具,但我不认为它是针对您所描述的内容。我的方法是创建运行iBatis代码的测试。这样,当测试失败时,您就会知道出错了。您可以做的其他事情是使用Oracle的metadata来测试程序的存在等。这些检查可能是额外的测试。
答案 1 :(得分:0)
自从我触及Oracle以来已经有一段时间了,但是如果我没记错的话,存储过程的输出(例如来自select)就不会在任何地方声明。因此,它需要通过工具进行反向可操作。对于SQL Server,LinqToSql尝试这样做,部分成功,但它通常是一个困难且不可靠的过程。所以,这似乎使您的列表中的项目3-5几乎无法使用代码生成/工具。我没有深入研究SubSonic 2.2对存储过程的支持,但我认为它也会对3-5项目感到困难。相反,声明为存储过程一部分的单个输出字段非常简单易于处理。
第1项和第1项2更容易实现,但我不熟悉iBatis周围的工具,对不起。我不认为iBatis或Oracle确实与您的问题有很大关系。
您最好的选择可能是说服您的DBA更有帮助和/或积极地运行差异以检测并手动处理存储过程更改。