我已经习惯使用 SQLAlchemy (Python) 来映射关系/集合lazy="dynamic"
,将属性映射为 Query 对象而不是填充的列表/集合(或延迟加载属性的代理)。然后,此映射属性允许您在执行此操作之前进一步细化用于获取集合的查询(应用顺序、限制、过滤器等)。
例如,在 SQLAlchemy 中,我可以像这样映射关系:
class Post(Base):
...
class User(Base):
...
posts = relationship(Post, lazy="dynamic")
然后当我检索用户时,我可以对帖子应用订单,或者只检索最后 5 个,等等。
user = session.query(User).get(1)
# Fetch the last 5 posts by user 1
posts = user.posts.order_by(Post.create_date.desc()).limit(5).all()
http://docs.sqlalchemy.org/en/rel_0_7/orm/collections.html
我很想找到一种使用 Fluent NHibernate 执行此操作的方法,将集合映射为 QueryOver 或 IQueryable (LINQ),例如:
public virtual QueryOver<Post> Posts {get; set;}
or
public virtual IQueryable<Post> Posts { get; set; }
并在映射中执行以下操作:
public class UserMap : ClassMap<User>
{
public UserMap()
{
...
HasMany(u => u.Posts).Fetch.Dynamic
}
}
目前这是否可以使用 Fluent NHibernate(或仅 NHibernate)?