2012-06-26 46 views
1

我能够在Oracle数据库中生成表,但它们是在默认表空间上生成的。NHibernate,Oracle和表空间

有谁知道如何指定哪些表空间,他们应该使用NHibernate(或您最喜欢的流利的映射API)创建?

如果我手动创建表(指定创建上的表空间),我可以随后通过NHibernate和我的C#代码将数据插入到它们中。

通过NHibernate的生成表,然后尝试插入数据,我得到以下错误:

NHibernate.Exceptions.GenericADOException: could not insert: [Some.Namespace.Core.MyObjectTable#fba3213d-bf7d-11e1-b71d-005056a80403][SQL: INSERT INTO "MyObjectTable" (Col1, Col2, Col3) VALUES (?, ?, ?)] 

随着内部异常:

System.Data.OracleClient.OracleException: ORA-01950: no privileges on tablespace 'THE_DEFAULT_TABLESPACE' 

肯定有解决的办法.. 。?我没有SQL Server的这种问题。

回答

0

您需要在表空间上配额。从DBA的帐户,您可以为实例运行下面的语句:

alter user <myuser> quota 5m on tablespace the_default_tablespace; 
+0

谢谢您的回答家伙,但我真的希望能够自动生成在给定的表空间中的表,然后将数据插入其中。相反,代码目前在默认表空间上创建了我没有特权的表。如果我通过SQL脚本手动创建表格,然后尝试通过NHibernate插入数据,一切工作正常。但是这打破了ORM的观点。 –

+0

然后,你需要在创建表格时指定表空间 – steve

+0

这是原始问题。但让我更具体(我会稍微编辑问题...)。我需要在NHibernate中指定表空间,但迄今为止所有的尝试都没有结果。 –