我在 MVC 4 应用程序中使用NHibernate/Fluent NHibernate最新版本。我Fluent NHibernate
是通过 Nuget 安装的,它的版本是1.3.0.733
. NHibernate 的版本类似于3.3.x
PM> Install-Package FluentNHibernate
请注意,当我安装Fluent NHibernate
版本 1.2.0.712 时不会出现此问题。
PM> 安装包 FluentNHibernate -Version 1.2.0.712
我有一个这样的查询,
public IList<Post> Posts(int pageNo, int pageSize)
{
return _session.Query<Post>()
.Where(p => p.Published)
.OrderByDescending(p => p.PostedOn)
.Skip(pageNo * pageSize)
.Take(pageSize)
.Fetch(p => p.Category)
.FetchMany(p => p.Tags)
.ToList();
}
共有三个类Post
:Category
和Tag
。在数据库中,我有 15 条记录Post
。pageNo
当我作为 0 和10传递时,pageSize
我从上述查询中只得到 7 条记录。为什么?
以下是类及其对应的映射类。
邮政
public class Post
{
public virtual int Id
{ get; set; }
public virtual bool Published
{ get; set; }
public virtual DateTime PostedOn
{ get; set; }
public virtual Category Category
{ get; set; }
public virtual IList<Tag> Tags
{ get; set; }
}
类别
public class Category
{
public virtual int Id
{ get; set; }
public virtual string Name
{ get; set; }
public virtual string Description
{ get; set; }
public virtual IList<Post> Posts
{ get; set; }
}
标签
public class Tag
{
public virtual int Id
{ get; set; }
public virtual string Name
{ get; set; }
public virtual string Description
{ get; set; }
public virtual IList<Post> Posts
{ get; set; }
}
邮政地图
public class PostMap: ClassMap<Post>
{
public PostMap()
{
Id(x => x.Id);
Map(x => x.Published).Not.Nullable();
Map(x => x.PostedOn).Not.Nullable();
References(x => x.Category).Column("Category").Not.Nullable();
HasManyToMany(x => x.Tags).Cascade.All().Table("PostTagMap");
}
}
类别地图
public class CategoryMap : ClassMap<Category>
{
public CategoryMap()
{
Id(x => x.Id);
Map(x => x.Name).Length(50).Not.Nullable();
Map(x => x.Description).Length(200);
HasMany(x => x.Posts).Inverse().Cascade.All().KeyColumn("Category");
}
}
标记图
public class TagMap: ClassMap<Tag>
{
public TagMap()
{
Id(x => x.Id);
Map(x => x.Name).Length(50).Not.Nullable();
Map(x => x.Description).Length(200);
HasManyToMany(x => x.Posts).Cascade.All().Inverse().Table("PostTagMap");
}
}