我在使用NHibernate /流利的NHibernate最新版本的MVC 4應用程序。我通過Nuget安裝了Fluent NHibernate
,它的版本是1.3.0.733
。 NHibernate的版本是一樣的東西3.3.x
流利的nhibernate的分頁問題
PM>安裝,包裝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和pageSize
作爲10我從上述查詢只有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; }
}
P ostMap
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");
}
}
CategoryMap
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");
}
}
TagMap
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");
}
}
只是雙重檢查:他們都肯定是「發佈」? –
你使用的是什麼版本的NH? – hazzik
作爲一個旁註,設計你的API可能會更好,因爲前者更靈活,可以採用(firstresult,maxresults)而不是(pageno,pagesize)。 –