NHibernate 结果对于 ClassMap 是空的,但对于原始 SQL
NHibernate results are empty with ClassMap, but not with raw SQL
我正在使用 NHibernate 设置一个项目,但遇到了问题。
当我尝试这样做时:
public Person GetById(int id)
{
using (var unitOfWork = new UnitOfWork(_nHibernateFactory.GetFactory()))
{
var result = unitOfWork.CurrentSession.CreateSQLQuery("SELECT * FROM [TABLENAME]").List();
}
}
我得到了很好的结果,我可以查询我的数据。
然而,当我有这个 ClassMap
:
public class PersonMap:ClassMap<Person>
{
public PersonMap()
{
Table("TABLENAME");
Id(p => p.Id);
Map(p => p.Name);
}
}
而我运行:
public Person GetById(int id)
{
using (var unitOfWork = new UnitOfWork(_nHibernateFactory.GetFactory()))
{
var result = unitOfWork.CurrentSession.Query<Person>().ToList();
}
结果为空,尽管它们看起来应该相同 table(我已经交叉检查 table 名称相同)。
有什么想法吗?
您必须将映射文件添加到您的 Fluent nHibernate 配置中。看这里:https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-configuration
我正在使用 NHibernate 设置一个项目,但遇到了问题。
当我尝试这样做时:
public Person GetById(int id)
{
using (var unitOfWork = new UnitOfWork(_nHibernateFactory.GetFactory()))
{
var result = unitOfWork.CurrentSession.CreateSQLQuery("SELECT * FROM [TABLENAME]").List();
}
}
我得到了很好的结果,我可以查询我的数据。
然而,当我有这个 ClassMap
:
public class PersonMap:ClassMap<Person>
{
public PersonMap()
{
Table("TABLENAME");
Id(p => p.Id);
Map(p => p.Name);
}
}
而我运行:
public Person GetById(int id)
{
using (var unitOfWork = new UnitOfWork(_nHibernateFactory.GetFactory()))
{
var result = unitOfWork.CurrentSession.Query<Person>().ToList();
}
结果为空,尽管它们看起来应该相同 table(我已经交叉检查 table 名称相同)。
有什么想法吗?
您必须将映射文件添加到您的 Fluent nHibernate 配置中。看这里:https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-configuration