Asp.net NHibernate映射问题-无效的对象名称';员工';

Asp.net NHibernate映射问题-无效的对象名称';员工';,asp.net,nhibernate,Asp.net,Nhibernate,我试图在控制台应用程序上配置NHibernate,在该应用程序中,我试图将Employee类映射到表Employee 我得到以下例外情况,我不知道: 类别: class Employee { public int id; public string name; public Employee manager; public string SayHello() { return str

我试图在控制台应用程序上配置NHibernate,在该应用程序中,我试图将Employee类映射到表Employee

我得到以下例外情况,我不知道:

类别:

 class Employee
    {
        public int id;
        public string name;
        public Employee manager;
        public string SayHello()
        {
            return string.Format(
            "'Hello World!', said {0}.", name);

        }
    }
表:

CREATE TABLE Employee (
id int identity primary key,
name varchar(50),
manager int )
GO
映射文件:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
auto-import="true">
  <class name="ConsoleApplication.Employee, ConsoleApplication1" lazy="false">
    <id name="id" access="field">
      <generator class="native" />
    </id>
    <property name="name" access="field" column="name"/>
    <many-to-one access="field" name="manager" column="manager"
    cascade="all"/>
  </class>
</hibernate-mapping>
我的数据库中有员工,当我运行消息属性中给定的查询时,该查询将成功执行

对此有何想法

谢谢,
Mahesh

我怀疑问题可能出在对经理的引用上,而不是对顶级员工的引用上。您的映射是否将管理器作为类而不是值引用?从生成的SQL中可以看出,您不知道问题出在manager字段的多对一映射中。您已指定:

access="field"

这告诉NHibernate使用反射来确定数据库中字段的名称。您有两个选项,但在您的情况下,我认为删除access属性是安全的,这意味着NHibernate将使用其默认访问(属性),然后使用manager,因为您已将其指定为属性的名称。如果这不符合您的要求,请阅读field属性以查看其他选项。

我知道NHibernate无法映射到内部类


public
范围声明添加到Employee类。

100%确定您指向了正确的数据库?是。配置也指向的AAM..将单词public添加到Employee类声明中是否有帮助?
Message: could not execute query
[ select employee0_.id as id0_, employee0_.name as name0_, employee0_.manager as manager0_ from Employee employee0_ ]
[SQL: select employee0_.id as id0_, employee0_.name as name0_, employee0_.manager as manager0_ from Employee employee0_]

StackTrace:   at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes)
   at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
   at NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results)
   at NHibernate.Impl.SessionImpl.List[T](String query, QueryParameters parameters)
   at NHibernate.Impl.QueryImpl.List[T]()
   at ConsoleApplication.Program.LoadEmployeesFromDatabase() in C:\Mahesh\Code\HelloNHibernate\ConsoleApplication1\Program.cs:line 50
   at ConsoleApplication.Program.Main(String[] args) in C:\Mahesh\Code\HelloNHibernate\ConsoleApplication1\Program.cs:line 18

Inner Exception: Invalid object name 'Employee'
access="field"