1

我已經習慣於使用SQLAlchemy(Python)來映射與lazy="dynamic"的關係/集合,該關係將該屬性映射爲查詢對象而不是填充的列表/集合(或用於延遲加載屬性的代理)。然後,這個映射屬性允許您在這樣做之前進一步優化用於獲取集合的查詢(應用順序,限制,過濾器等)。作爲Queryable的地圖集合

例如,在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


我很想找到一個方法來做到這一點使用FL uent 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 
    } 
} 

這是目前可能使用功能NHibernate(或只是NHibernate的)?

回答

0

這是可能的使用NHibernate,但它不是開箱即用。

您需要編寫自己的collectionwrapper實現IQueryable,將它注入自己的CollectionFactory並將查詢生成委託給加載了包含對象的會話。

+0

謝謝,我會看看我是否可以在某處找到它。 –