|
|
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Работать с NHibernate как-то трудновато. В стандартном ADO.NET я привык, что мои ошибки вылавливаются корректно - с указанием сути, и главное, - места, где я их допустил. А вот при использовании NHibernate с этим проблемы. Получаю, например, ошибку "Индекс за пределами диапазона" и начинаю уродоваться - в каком же это классе я что-то упустил? Или не в описании, а в мэппинге? Или не в нем самом, а в связанном классе? Иногда ошибка вылезает при загрузке приложения (где я объявлял параметры сессии и т.п.). Тогда я не получаю даже вразумительного сообщения о проблеме... На поиск подобных ошибок пока что уходит подавляющее время разработки :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 09:25 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Так никто лёгкой жизни с NHibernate и не обещал. Может стоит наконец прочитать книжку, и вскурить документацию, дабы корректно писать маппинги и конфиг NHibernate? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 09:59 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
SolYUtorТак никто лёгкой жизни с NHibernate и не обещал. Может стоит наконец прочитать книжку, и вскурить документацию, дабы корректно писать маппинги и конфиг NHibernate? Пока что имею на вооружении лишь книжку "Nhibernate in action". Пишу на fluent-е, а для него литературы мало. Многие примеры "компилирую" в вид, который мне кажется правильным. Ошибки получаю в тривиальных случаях, на которых авторы "трудов" даже не заостряют внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 10:22 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, прикрутите log4net ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 10:27 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
NHibernate in Action прочитать обязательно. А чтобы не было ошибок, освойте ТDD. Тем более для Fluent NHibernate доступен инструментарий для тестирования сохраняемости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 10:51 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Знаете, коллеги! Пока исполняешь учебные примеры из горячо любимой Northwind, смотришь видеоуроки и читаешь книжки - вроде все шоколадно получается. Как только садишься за реальный проект с не менее горячо любимым ораклом его ХП, рефлексивными и наследственными связями - становится как-то уныло :( В общем, будь проклят тот день, когда я сел за баранку йэтого пылесоса!!! (с) ;) Черт меня дернул дорабатывать старый проект на "современной платформе"... Пойду прикручивать Log4Net.. В очередной раз (а то с первого раза он у меня как-то не прикрутился). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 14:51 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Настройте маппинги NHibernate сами, это единственная рутинность. Забейте на автофлюенты и прочую муть, ручной мап даст б о льшую гибоксть. В остальном, с хибером работать очень приятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 15:59 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, Хехе Приятная рекомендация (новичку в этом деле.)мапить в ручную Northwind с хуетучами таблиц, связей и составных ключей. Может вернуться к Афтор->Книжка? и там попробовать в рукопашную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 16:30 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степиХехе Приятная рекомендация (новичку в этом деле.)мапить в ручную Northwind с хуетучами таблиц, связей и составных ключей. В чём сложность нарыть в гугле готовые маппинги под семпловую базу? Религия? Где-то в степиМожет вернуться к Афтор->Книжка? и там попробовать в рукопашную? А может включить моск и начать писать код? Каждый выбирает, что ему проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 16:41 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, у меня нет особых шансов юзать автомаппинг, т.к. я делаю надстройку к существующей АС. База данных в ней создана давно, но весьма корректно с точки зрения архитектуры и нотаций. Как я понимаю, чтобы воспользоваться автомэппингом, надо придерживаться специальных соглашений по построению БД. Кстати - я глянул мельком на соглашения по именованию и припух - они катастрофически противоречат лучшим практикам построения БД! Напр, большинство промышленных CASE средств построения моделей БД требуют, чтобы коды полей были уникальными. А это значит, что поле ID в каждой сущности - не прокатит. Видимо это хорошо для тех, кто "проектирует" БД вручную, типа "CRESTE TABLE ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 17:01 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Дело в том, что NHibernate придумали любители DDD. Их представление о проектировании БД несколько отличается от традиционного data-centric подхода. И что-то я не припоминаю в прочитанных книгах по DDD даже упоминания о промышленных CASE-средствах проектирования БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 17:10 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльНапр, большинство промышленных CASE средств построения моделей БД требуют, чтобы коды полей были уникальными. А это значит, что поле ID в каждой сущности - не прокатит. Видимо это хорошо для тех, кто "проектирует" БД вручную, типа "CRESTE TABLE ..." Да глупости это всё. У меня все таблицы имеют название "ID" и всё крутится на хибере. Никаких проблем тут нет. Ровно и наоборот. Называйте поля как хотите, автомапу всё-равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 17:18 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
SolYUtor, я не вижу пока четко, откуда выросли ноги. DDD или TDD... Тут больше борьбы между приверженцами ООП и теми, кто не видит в нем панацею (как я). Самые ярые из первых вообще бы отменили реляционную модель за ненадобностью. Их мечта - безупречные персистентные объекты. А нынешняя суета вокруг ORM - это только средство их воплощения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 17:37 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степиКурдль, прикрутите log4net Раньше я его недооценил! В этот раз он тоже, правда, не сильно помог. Выдал перед ошибкой SQL запрос без изъяна... Зато сравнив мэржилкой лог с ошибкой и лог без ошибки + немного танцев с бубном = вычислил, что в мэппинге поле указано дважды - в теле мэппинга и в reference. Когда убрал из тела - ошибка исчезла, отображаться объекты стали корректно и записываться в БД - тоже. Только перестали работать комбобоксы в представлениях :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 20:14 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, вот некоторые пуанты для танцев, могут где-то помочь Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 22:01 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Не удалось привести тип объекта "NHibernate.Util.UnmodifiableDictionary`2[System.String,NHibernate.Metadata.IClassMetadata]" к типу "System.Collections.IDictionary". Попробую все же прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 22:37 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, У меня получилось что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 22:50 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Это скорее из за версионости NH1.2 and NH 2.1 надо было попробовать простой cast (IDictionary)sessionFactory.GetAllClassMetadata(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2010, 23:55 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Простой cast и вызвал упомянутую мной ошибку. Но главный вывод для меня из всей темы: "Нельзя мапить поля дважды - собственно в маппинге полей и потом в маппинге связей". Теперь не могу понять, как в ASP.NET MVC использовать списки выбора - незамапленные ключевые поля не обрабатываются корректно. Например, приведенная ниже конструкция больше не работает Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 13:01 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Честно сказать не могу понять, что такое не замапленные ключевые поля, ключ должен быть.. вот почитайте, вроде толковый перевод тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 13:53 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Объясню на еще более простом примере. (Первоисточник: http://slynetblog.blogspot.com/2009/10/nhibernate.html ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Закомментированная строка добавлена мной, хотя в первоисточниках поля, являющиеся внешними ключами, мапится только в References. Смотрим, что выдает метод _session.Get<Order>(Id): Id = 777 NumberOfItems = 88 Customer = 55 ProductId = null - это мне не подходит Если раскомментировать Map(x => x.ProductId): Id = 777 NumberOfItems = 88 Customer = 55 ProductId = 44 - получаю проблемы при update (Index was out of range). Сейчас с ними пытаюсь разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 20:53 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Зачем маппить ProductId? Зачем вам этот Id вообще надо? Если сильно хочется то вызвать Order.Product.Id что мешает? КурдльГде-то в степи, - получаю проблемы при update (Index was out of range). Сейчас с ними пытаюсь разобраться. Стек в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 21:12 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
SolYUtor, Моя проблема в том, что я впрягся сразу в 2 малознакомых для меня направления - вэб и ORM. И пока у меня больше вопросов, чем ответов. Некоторые я откладываю на будущее. В данный конкретный момент меня шибко волнует, как заставить работать визуальный компонент Html.DropDownList ( http://sql.ru/forum/actualpost.aspx?bid=12&tid=769811&mid=9006997&p=1#9006100), не имея упомянутого Вами "ProductId" (в моем случае STATUS_ID). И, согласитесь, - как-то не кошерно иметь персистентный объект, в котором не все поля получают значения из БД, когда Вы этого ожидали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 22:20 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, А почему именно NHibernate? Одно дело, если есть опыт разработки на Java - тогда есть резоны не отказываться от привычных средств. Если же такового нет - чем голый ADO.NET с LINQ не устраивает? Про ADO EF молчу - сам не пользовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 22:49 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysauxКурдль, А почему именно NHibernate? Одно дело, если есть опыт разработки на Java - тогда есть резоны не отказываться от привычных средств. Если же такового нет - чем голый ADO.NET с LINQ не устраивает? Про ADO EF молчу - сам не пользовал. Да, конечно, уроки и примеры по ASP.NET MVC пройдены с LINQ-ом. Посматривал и на EF... Но есть одна маленькая проблема, под названием oracle! Раньше MS стеснялся выпускать продукты, не поддерживающие его... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:01 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36708297&tid=1351219]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
62ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 454ms |

| 0 / 0 |
