2016-04-02 2 views
0

У меня есть сущность Программа со следующим отображением.Nhibernate бросает «Не удается разрешить исключение свойства»

References(c => c.Region).Column("FK_RegionId").Fetch.Join(); 
References(c => c.RequestType).Column("FK_RequestTypeId ").Fetch.Join(); 
References(c => c.CategoryCode).Column("FK_CategoryCodeId").Fetch.Join(); 
References(c => c.HouseHoldSize).Column("FK_HouseHoldSizeId").Fetch.Join(); 

И я пытаюсь извлечь с помощью следующих Hibernate запроса

return session.QueryOver<Program>().Where(x => x.Region.ID == fields.Region && x.RequestType.ID == fields.RequestType 
      && x.HouseHoldSize.Size == fields.HouseholdSize).SingleOrDefault(); 

Но он бросает исключение заявив, что не может решить свойство HouseHoldSize.Size. Может кто-нибудь уточнить, что происходит ..? Спасибо заранее

+0

Мое предположение было неправильно, и поэтому я удалил свой предыдущий ответ. Но ваш комментарий к нему дал понять, что вы нашли хотя бы частичное решение. Я думаю, вы должны [изменить] свой вопрос, чтобы добавить его в него как недостаточно хорошее решение и сказать, что он все еще не касается всех ваших проблем. –

ответ

1

Похоже, вы пытаетесь использовать свойство другого объекта без соединения. Вы должны использовать соединение, если используете QueryOver. Вы можете сделать это с поставщиком Linq хотя:

return session.Query<Program>().Where(x => x.Region.ID == fields.Region && x.RequestType.ID == fields.RequestType 
     && x.HouseHoldSize.Size == fields.HouseholdSize).SingleOrDefault(); 

Если вы хотите использовать queryover взглянуть на:

http://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.html

+0

Я думаю, что я уже добавил для этого комментарий. Но в любом случае проблема была решена с помощью «JoinQueryOver» в Nhibernate. Я просто хочу знать, почему «Fetch.Join()» не будет работать ... – Jajan

+1

Это не совсем то, что ваш вопрос задал. 'Fetch.Join()' используется только для «нетерпеливых» загружаемых данных со стороны отображения. Несмотря на то, что он загружен, вы все равно не можете использовать свойства из другого объекта в QueryOver. Вы должны использовать провайдер linq для этого или делать явные объединения в 'QueryOver' –

Смежные вопросы