Oracle(ODP.net)的SubSonic3 T4模板为ActiveRecord生成奇怪的查询(Square Brackets问题)

时间:2010-11-22 16:00:43

标签: oracle subsonic subsonic3 t4 subsonic-active-record

目前,我正在尝试将SubSonic3 ORM(ActiveRecords模式)与Oracle(ODP.NET)数据提供程序和T4模板一起使用来访问Oracle 10g(版本10.2.0.3.0)数据库。

在处理了一些小故障后,让模板为我构建各种代码,我设法将其全部编译并运行,但是我遇到了它为我生成的查询问题。< / p>

通过代码跟踪/步进,我看了一下生成什么SQL查询并找到了这个:

SELECT [t0].[SOME_COLUMN], [t1].[ANOTHER_COLUMN]
FROM [USER].[SOME_TABLE] AS t0
CROSS JOIN [USER].[ANOTHER_TABLE] AS t1
WHERE ([t0].[ID] = [t1].[ID])

我的代码抛出了一条带有“Missing Expression:ORA-00936”的Oracle消息的异常。所以我尝试直接在命令行运行此查询,并使用相同的消息错误地输出。

然后我删除了所有方括号(对我来说看起来不对)和“AS”引用(第2行和第3行)并且查询运行正常。

有人可以向我解释为什么SubSonic会这样做吗?或者甚至更好,如何解决这个问题?

谢谢!

编辑:我想我也应该问(因为我不是Oracle专家):方括号是正常还是合法?那么“AS”运营商呢?

1 个答案:

答案 0 :(得分:0)

在进行了一些挖掘之后,我发现对于Oracle(可能还有DB2)的支持,SubSonic的主干上有一个fork,它可以更好地支持这两个数据库。请点击此链接:https://github.com/rally25rs/SubSonic-3.0

此源代码似乎是真正的交易。