我正在使用NHibernate和Fluent,我正在尝试使用Critera.List
做一个GetAll类型的事情:
public static List<T> GetAll(int pageIndex, int pageSize)
{
using (ISession session = Utils.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
ICriteria criteria = session.CreateCriteria(typeof(T));
criteria.SetFirstResult(pageIndex * pageSize);
if (pageSize > 0)
{
criteria.SetMaxResults(pageSize);
}
return criteria.List<T>() as List<T>;
}
}
}
我的地图如下所示:
public class GenreMap: ClassMap<Genre>
{
public GenreMap()
{
Table("Genres");
Id(x => x.ID);
//.GeneratedBy.Identity();
Map(x => x.Name, "GenreName")
.Length(1000);
}
}
底层PK / ID是GenreID
(不是ID),但我已正确设置地图(或者我相信)。
那我为什么会收到这个错误?
答案 0 :(得分:3)
您需要为地图中的ID添加列名:
Id(x => x.ID, "GenreID");
否则NHibernate会认为列名与属性名相同,在这种情况下不是。