MVC4アプリケーションでNHibernate/FluentNHibernateの最新バージョンを使用しています。Fluent NHibernate
Nugetを介してインストールしましたが、バージョンはです1.3.0.733
。NHibernateのバージョンは次のようなものです3.3.x
PM>インストール-パッケージFluentNHibernate
Fluent NHibernate
バージョン1.2.0.712をインストールしても、問題は発生しないことに注意してください。
PM>インストール-パッケージFluentNHibernate-バージョン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
、、、の3つのクラスがあり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; }
}
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");
}
}
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");
}
}