我认为这个问题以前已经完成,但我找不到明确的答案。 我已将SQl Server 2005数据库迁移到oracle 11.我正在使用亚音速2.1。我已经创建了所有数据层类,并且生成了所有内容。但是当我尝试在数据库中插入时,问题就出现了:除非你定义一个序列和一个触发器,否则Oracle在主键中没有自动增量。因此,Subsonic使用id列定义控制器中的所有Insert方法。有没有办法避免亚音速不生成带有id列的Insert方法,我将使用触发器和序列生成?
非常感谢
SToledo
更新 我终于在Subsonic 2.1源代码中做了一个可怕的黑客(我感到惭愧)。我确实修改了OracleDataProvider,将id-named列设置为autoincrement为true。然后,模板将按照我的预期运行。我知道这是一个可怕的黑客,但它对我有用。 谢谢你的帮助。
答案 0 :(得分:0)
不了解Subsonic,但如果表的数量相对较小,您可以修改BEFORE-INSERT触发器以禁用无效检查:
CREATE OR REPLACE TRIGGER trig_BI
BEFORE INSERT
ON tab_name
FOR EACH ROW
BEGIN
--IF :NEW.key_column IS NULL
--THEN
SELECT tab_seq.NEXTVAL INTO :NEW.key_column FROM DUAL;
--END IF;
END;