가장 기본적인 쿼리를 수행하는 매핑 예외가 발생합니다.쿼리에 대한 NHibernate 예외
public class Project
{
public virtual string PK { get; set; }
public virtual string Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
그리고 매핑 클래스 : 이 내 도메인 클래스입니다
public class ProjectMap :ClassMap<Project>
{
public ProjectMap()
{
Table("PROJECTS");
Id(x => x.PK, "PK");
Map(x => x.Id, "ID");
Map(x => x.Name, "NAME");
Map(x => x.Description, "DESCRIPTION");
}
}
구성 :
public ISessionFactory SessionFactory
{
return Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard.ShowSql().ConnectionString(c => c.Is("data source=" + path)))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Project>())
.BuildSessionFactory();
}
그리고 쿼리 IList의 프로젝트;
using (ISession session = SessionFactory.OpenSession())
{
IQuery query = session.CreateQuery("from Project");
project = query.List<Project>();
}
내가 쿼리 줄에 예외를 받고 있어요는 :
NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: Project is not mapped [from Project]
at NHibernate.Hql.Ast.ANTLR.SessionFactoryHelperExtensions.RequireClassPersister(String name)
at NHibernate.Hql.Ast.ANTLR.Tree.FromElementFactory.AddFromElement()
at NHibernate.Hql.Ast.ANTLR.Tree.FromClause.AddFromElement(String path, IASTNode alias)
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElement()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromElementList()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.fromClause()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.unionedQuery()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.query()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.selectStatement()
at NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.statement()
at NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate()
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Analyze(HqlParseEngine parser, String collectionRole)
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary`2 replacements, Boolean shallow, String collectionRole)
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile(IDictionary`2 replacements, Boolean shallow)
at NHibernate.Engine.Query.HQLQueryPlan..ctor(String hql, String collectionRole, Boolean shallow, IDictionary`2 enabledFilters, ISessionFactoryImplementor factory)
at NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(String queryString, Boolean shallow, IDictionary`2 enabledFilters)
at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(String query, Boolean shallow)
at NHibernate.Impl.AbstractSessionImpl.CreateQuery(String queryString)
뭔가 내 쿼리에 문제가 있습니다 가정합니다.
으로 변경하십시오. ProjectMap 클래스가 Project 클래스와 동일한 어셈블리에 있습니까? – Vadim
주제에서 벗어나지 만 PK와 ID의 차이점은 무엇입니까? – Phill
아니요 ProjectMap 클래스가 DatabaseServer 어셈블리에 있습니다. 프로젝트 클래스가 도메인 어셈블리에 있습니다. DatabaseServer 어셈블리에는 도메인 어셈블리에 대한 참조가 있습니다. – Yoav