流畅的NHibernate HasMany集合没有填充

时间:2011-10-06 08:46:19

标签: asp.net asp.net-mvc collections fluent-nhibernate has-many

我无法设置Fluent NHibernate HasMany系列。

我已将代码设置如下,我通过Linq IQueryable调用它。 在SQL事件探查器中,我可以看到正在调用的SQL,但Store.Staff集合始终为空。

    public class Store
    {
        public virtual IList<Employee> Staff { get; set; }

        public virtual void AddEmployee(Employee Employee)
        {
            Employee.Store = this;
            if(Staff == null)
                Staff = new List<Employee>();
            Staff.Add(Employee);
        }


    public class StoreMap : ClassMap<Store>
    {
        public StoreMap()
        {
            Id(x => x.StoreId)
                .GeneratedBy.Identity();

            HasMany(x => x.Staff)
                  .Inverse()
                  .Cascade.All();            
       ...
        }
    }


    public bool Create(Store entity)
    {
        var stores = _readRepository.Query<Store>()
            .Where(x => x.StoreId == entity.StoreId)
            .Fetch(x => x.Staff)
            .ToList();



select store0_.StoreId, 
       staff2_.SurgeryId,
       staff2_.StoreId  
from   dbo.[Store] store0_
       left outer join dbo.[Employee] staff2_
         on store0_.StoreId = staff2_.StoreId
where  store0_.StoreId = 1 /* @p0 */

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

不确定这是不是问题,但你应该使用FetchMany来急切地加载集合,而不是Fetch。

答案 1 :(得分:0)

我混淆了框架的两个部分。我正在使用Linq来检索数据而无法急切加载。 我现在使用NHibernate.Session.QueryOver。

而不是使用Linq