使用NHibernate过程中 出现的奇怪问题
本人刚接触NHibernate 做了一个小demo 代码如下
C# code
private void Form1_Load(object sender, EventArgs e)
{
Configuration cfg = new Configuration().Configure();
ISessionFactory Factory = cfg.BuildSessionFactory();
ISession session = Factory.OpenSession();
IQuery query = session.CreateQuery("from Login");
IList<Login> list = query.List<Login>();
foreach (Login login in list)
{
MessageBox.Show(login.Name);
}
}
运行 没问题。
接下来的 我将代码小小改动了一下
C# code
public class Nhelp
{
public IList<T> Query<T>()
{
Configuration cfg = new Configuration().Configure();
ISessionFactory Factory = cfg.BuildSessionFactory();
ISession session = Factory.OpenSession();
IQuery query = session.CreateQuery("from login");
IList<T> list = query.List<T>();
return list;
}
}
写了一个 Nhelp 类
调用
C# code
private void Form1_Load(object sender, EventArgs e)
{
Nhelp help = new Nhelp();
IList<Login> list = help.Query<Login>();
foreach (Login login in list)
{
MessageBox.Show(login.Name);
}
}
只是做了一个简单的封装,运行
在 Nhelp 类的 IQuery query = session.CreateQuery("from login");
出 报错 login is not mapped [from login]
错误代码
未处理 NHibernate.Hql.Ast.ANTLR.QuerySyntaxException
Message="login is not mapped [from login]"
Source="NHibernate"
QueryString="from login"
StackTrace:
在 NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions.RequireClassPersister(String name)
在 NHibernate.Hql.Ast.ANTLR.Tree.FromElementFactory.AddFromElement()
在 NHibernate.Hql.Ast.ANTLR.Tree.FromClause.AddFromElement(String path, IASTNode alias)
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.CreateFromElement(String path, IASTNode pathNode, IASTNode alias, IASTNode propertyFetch)
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElement()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElementList()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromClause()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.unionedQuery()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.query()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.selectStatement()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.statement()
在 NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate()
在 NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Analyze(String collectionRole)
在 NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary`2 replacements, Boolean shallow, String collectionRole)
在 NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile(IDictionary`2 replacements, Boolean shallow)
在 NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IASTNode ast, String queryIdentifier, String collectionRole, Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor factory)
在 NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String queryString, String collectionRole, Boolean shallow, IDictionary`2 fi