PostgreSQL与nHibernate(.net,pgsql)查询错误

时间:2010-11-11 18:51:55

标签: nhibernate postgresql

我试图从我的PostgreSQL数据库中获取所有电影的列表,如下所示:

IQuery query = session.CreateQuery("FROM Movie");

但得到此错误:错误:42P01:关系“电影”不存在

这是我在pgAdminIII中使用的查询

SELECT 
  "Movies"."Id", 
  "Movies"."Title", 
  "Movies"."Director", 
  "Movies"."ReleaseDate"
FROM 
  public."Movies";

从nHibernate构建的查询看起来不正确。这是web.config设置。

<configSections>
    <section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory name="NHibernate.Test">
        <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
        <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
        <property name="connection.connection_string">Server=localhost;database=Movies;User ID=movie;Password=password;</property>
        <property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
        <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    </session-factory>
</hibernate-configuration>

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

看一下错误:

  

错误:42P01:关系“电影”的确如此   不存在

这是小写电影,而不是在你的SQL中使用的双引号(!)之间的大写电影。 PostgreSQL使用小写,或者你必须使用双引号。

建议:始终在数据库中使用小写字母作为对象名。