我正在使用最新版本的NHibernate/Fluent NHibernate在MVC 4应用程序中。我通过Nuget安装了Fluent NHibernate,其版本号为1.3.0.733。NHibernate的版本号大约为3.3.x。
请注意,当我安装Fluent NHibernate版本1.2.0.712时,问题不会发生。
我有一个查询如下:
有三个类:
请注意,当我安装Fluent NHibernate版本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条记录。为什么?
以下是类及其相应的映射类。
Post
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; }
}
PostMap
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");
}
}
标签映射
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");
}
}