Свободная коллекция NHibernate HasMany не заселена - PullRequest
0 голосов
/ 06 октября 2011

У меня проблемы с настройкой коллекции Fluent NHibernate HasMany.

Я настроил код, как показано ниже, и я вызываю его с помощью Linq IQueryable.В SQL Profiler я вижу, что вызывается правильный 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 голосов
/ 07 октября 2011

Я путал две части фреймворка.Я использовал Linq для получения данных и не мог загружать с нетерпением.Вместо использования Linq я теперь использую NHibernate.Session.QueryOver.

0 голосов
/ 06 октября 2011

Не уверен, что это проблема, но вы должны использовать FetchMany для активной загрузки коллекций, а не Fetch.

...