NHibernate:获取“无效的列名'ID'。”当我使用Criteria.List

时间:2010-07-04 02:54:49

标签: c# nhibernate fluent-nhibernate

我正在使用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),但我已正确设置地图(或者我相信)。

那我为什么会收到这个错误?

1 个答案:

答案 0 :(得分:3)

您需要为地图中的ID添加列名:

Id(x => x.ID, "GenreID"); 

否则NHibernate会认为列名与属性名相同,在这种情况下不是。