流利的Nhibernate Oracle标识符太长 - 别名名称问题

时间:2010-01-24 15:44:01

标签: oracle nhibernate fluent ora-00942

我试过这样做。

HasManyToMany<YechidotDoarInGroup>(x => x.Col_yig) 
  .Table("PigToYig") 
  .ChildKeyColumn("YIG_GROUP_RECID") 
 .ParentKeyColumn("PIG_GROUP_RECID"); 

但我有:

  

ORA-00942:表或视图不存在

我正在尝试建立HasManyToMany连接,而不是ID,但是 其他一些财产。

首先我得到了 - 太长的消息。当我尝试将自己的表名称作为别名输入时,它无法识别。我该怎么办?

3 个答案:

答案 0 :(得分:2)

问题可能就是这样:

.Table("PigToYig") 

默认情况下,Oracle对象名称为UPPER大小写。但是,在给定的情况下,Oracle在双引号中应用名称。换句话说,如果您的表具有默认命名,则可能需要传入此代码......

.Table("PIGTOYIG") 

这取决于NHibernate如何将这些变量转换为SQL(我不熟悉NHibernate)。

答案 1 :(得分:1)

  

原因:输入的表格或视图确实如此   不存在,不是同义词   允许在这里使用,或视图是   引用需要表的位置。   现有的用户表和视图可以是   通过查询数据列出   字典。某些特权可能是   需要访问该表。如果   应用程序返回此消息,   应用程序试图访问的表   在数据库中不存在,或者   应用程序无权访问   它。

     

操作:
  请检查以下各项:

 * the spelling of the table or view name.
 * that a view is not specified where a table is required.
 * that an existing table or view name exists.

source ora-code.com

答案 2 :(得分:1)

在所有映射声明之前定义Table()方法。

public EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table("EMPLOYEE");
        // your declaration
        Id(x => x.IdEmployee);        
    }
}