|
|
|
Как отлаживать приложения с 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 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Эмм, если вы про провайдеры .NET под Оракл - нужно пользовать не дефолтные, которые идут с фреймворком, а от самого оракла. Работают под NET4 включительно, поддерживают все "положенные" в .NET фичи, кроме разве EF - пока поддержки нет, но уже работают над этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:04 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль Да, конечно, уроки и примеры по ASP.NET MVC пройдены с LINQ-ом. Посматривал и на EF... Но есть одна маленькая проблема, под названием oracle! Я так понимаю - ASP.NET приложение под Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:06 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysaux, и с LINQ работают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:08 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Да. http://otn.oracle.com/dotnet Честно, удивлен что вы про них не слышали. ЕМНИП, оракловцы делают этот провайдер в тесном сотрудничестве с МС, и сами МС всегда рекомендуют использоватеь провайдеры от Оракла, а не дефолтный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:10 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльSolYUtor, В данный конкретный момент меня шибко волнует, как заставить работать визуальный компонент Html.DropDownList ( http://sql.ru/forum/actualpost.aspx?bid=12&tid=769811&mid=9006997&p=1#9006100), не имея упомянутого Вами "ProductId" (в моем случае STATUS_ID). Так нарисуйте отдельный класс-обёртку DropDownItem, который будет возвращать нужные свойства из объектов. Курдль И, согласитесь, - как-то не кошерно иметь персистентный объект, в котором не все поля получают значения из БД, когда Вы этого ожидали... Некошерно маппить ключевое поле дважды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:11 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Точнее linq to dataset - точно работает, глюков не встречал, и не слышал что есть. Linq to SQL - не использовал, да и смысла особого не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:17 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysaux, я использую OracleDataAccess из последних. Ткните меня в ссылку, что он подключается к LINQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:31 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
SolYUtor Так нарисуйте отдельный класс-обёртку DropDownItem, который будет возвращать нужные свойства из объектов. Это танцы с бубном. Должен быть более изящный вариант. SolYUtor Некошерно маппить ключевое поле дважды. Да мне хоть трижды! Я готов 1 раз потрудиться над маппингом, чтобы все остальное время класс вел себя так, как задумано. Какого черта Get возвращает null в этом поле, если в БД прописано конкретное значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:41 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, Вот так навскидку - не нашел ссылок. Явных утверждений, что НЕ поддерживает - тоже не нашел. А то что (не только)у меня работает linq к typed датасетам, построенным из оракловых табличек - не годится? Если не ошибаюсь, linq может обращаться к любым данным - лишь бы провайдер реализовал интерфейс IQueryable, т.е. это немного не к Ораклу вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:47 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль Ткните меня в ссылку, что он подключается к LINQ. Оп, нашел на forums.oracle.com - Linq-to-Oracle(я так понимаю это LinqToSQL?), как и ADO.NET EF - еще не реализованы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:53 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysaux, я честно скажу, что не знаком с надстройкой Fluent и никогда ее не пользовал, может лень матушка, но придерживаюсь классического стиля на XML, благо мапперов хватает. Ну и в общем вам советую вернуться к классическому мапу, как более документированному аки разумному и более понятному ( мое имхо). попробуйте сделать - убрать из ордера References, ProductId замапте. а вытаскиванье продукта в ордере, сделайте из акцкссора Productа прямо в классе Ордер через ses.Get<>(), вы же ордер через продукт вставлять будете это будет не криминально, и ленивая загрузка сохранится, Fluent я думаю это позволяет, на xml, такие трюки возможны.. посмотрите похожий пример на Fluentе http://netcoder.ru/blog/csharp/129.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2010, 23:55 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysauxКурдль, А то что (не только)у меня работает linq к typed датасетам, построенным из оракловых табличек - не годится? Я не так уж глубоко копал, но что даст linq к датасэтам? И вообще, зачем я тогда отказался от любимых датасэтов в пользу ORM? LINQ и Nhibernate дают полный цикл ORM преобразований. А что дает linq к датасэтам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:02 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль LINQ и Nhibernate дают полный цикл ORM преобразований. А что дает linq к датасэтам? "Полноценные" ORM не использовал, а linq к датасетам дает простой и интуитивный способ выборки данных из таблиц. ИМХО, проще написать Код: plaintext 1. 2. 3. А если можно, "в двух словах" - какие преимущества дает ОРМ? Как бы в датасетах тоже замаплены таблицы, и у нас есть объекты DataTable, dataRow, к которым можно обращаться как к объектам, не заморачиваясь, какой синтаксис SQL у конкректной СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:11 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Спасибо! Я попробую. Только сначала попытаюсь разобраться "по-хорошему" - вдруг я где-то недосмотрел? Танцевать с бубном я уж привык, как только взялся за Nhibernate. Может это причуды oracle... Интересно, есть ли у кого этот же пример с Nhibernate и MS SQL? Возвращается ли там null в OrderId или значение?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:21 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysaux[quot Курдль] "Полноценные" ORM не использовал это как езда на запорожце и мерседесе, вроде все ездють, а кайф от езды разный. вы еше не вспомнили типизированы датасет, интересно - этим атавизмом ктонить пользуется кроме батонокидателей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:25 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, Ну, видимо я батонокидатель. Просто не видя плюсов в ОРМах, не хочу кидаться их применять -только потому что модно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:27 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
sysaux, Я уже говорил, что не в LINQ, Nhibernate и даже не в ORM дело, а в ООП. DDD, а особенно - TDD требуют возврата к безупречной объектной модели предметной области. Великолепные порождения ADO.NET - многотабличные датасэты со встроенной поддержкой целостности данных и т.д. не отвечают их концепции. Главное - объектная модель, а ORM - лишь один из методов практической реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:31 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи вы еше не вспомнили типизированы датасет, интересно - этим атавизмом ктонить пользуется кроме батонокидателей? Я с удовольствием пользуюсь. А в чем они хуже нетипизированных? Чем запись DataSet1.Tables["Orders"] лучше DataSet1.Orders? Неужели тем, что в первом случае ошибку на этапе компиляции не выявить и intellisense не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2010, 00:39 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльНо есть одна маленькая проблема, под названием oracle! Раньше MS стеснялся выпускать продукты, не поддерживающие его... Sample Entity Framework Provider for Oracle P.S. Но, вообще, лично я бы рекомендовал хибер под оракуль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 09:25 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, Спасибо! Я разглядывал это произведение программистского искусства. Пока что доверия оно не вызвало. Видел я и промышленные продукты сторонних производителей типа: http://www.devart.com/dotconnect/oracle/ Но они стоят денег и пока не понятно, чего от них можно ожидать. Кстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами? http://www.sql.ru/forum/actualthread.aspx?tid=769811&pg=1#9006962 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 09:51 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльКстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами? Я бы маппил только в теле маппинга полей и всё. За целостность данных пусть БД отвечает, а не клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 10:54 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУКурдльКстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами? Я бы маппил только в теле маппинга полей и всё. За целостность данных пусть БД отвечает, а не клиент. Целостность данных я даже пока не рассматриваю. Маппить связи нужно, чтобы получать связанные объекты. Напр. если я хочу отобразить подробности о книге, то могу вытянуть связанный "Много-к-одному" объект "автор" с его атрибутами а из него - объект "адрес" и т.п. Как иным образом можно это получить, не замапив связи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 11:08 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
А зачем Вам маппить второй раз поле? Замапили сущность и всё. Чтобы потом через значение кода вытянуть сущность (в отличие от тупого EF и LINQ 2 SQL), вовсе необязательно вытягивать из БД эту сущность (лишний запрос). Достаточно просто выкрутиться так: Код: plaintext Согласен, бывают такие ситуации, что у дочерней записи требуется узнать значение ID родителя. Ну тут только по лэзи перезапрашивать... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 11:38 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУА зачем Вам маппить второй раз поле? Замапили сущность и всё. Мы пошли по кругу. Я привел пример, зачем может понадобиться такое поле, чуть раньше: /topic/769811&pg=1#9006100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 11:48 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Ну так возьмите значение замапленной сущности в декларативном коде так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 12:24 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, О!!! Это уже интереснее! Чувствую, что я Вас так просто не отпущу! ;) Тогда как нужно заполнять данные для списков выбора? Я пользуюсь кодом из примера: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 13:24 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Биндить данные для комбобоксов нужно так, как это делают всегда. Когда набор сущностей прибиндился, то декларативно заюзать аттрибут парентовой (референсной) сущности можно так, как я показал в прошлом посте. Экспериментируйте. P.S. Толко Вы должны понимать, что при бинде каждой сущности в комбобоксе будет происходить Lazy запрос на сервер. P.S2. В плане отпимизации исполняемого SQL кода за такой подход обычно отрезают нижнюю челюсть. Поэтому, планируйте подобные выборки средствами серверных представлений, функций и/или хранимых процедур. P.S3. ORM универсальный инструмент, а не оптимальный. Нужно это помнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2010, 13:40 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ P.S. Но, вообще, лично я бы рекомендовал хибер под оракуль. Спасибо за рекомендацию! К сожалению в ORM под NET с оракулем не разбежишься... Но Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 09:12 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльНо Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :( Смотря что понимать под "полной мерой" ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 09:47 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУКурдльНо Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :( Смотря что понимать под "полной мерой" ;) Это надо понимать так: "позволяет исполнять любые валидные хранимые процедуры и функции оракла, корректно передавая значения входных параметров и получая правильные значения выходных параметров и результатов функций". Как-то так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 09:57 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльЭто надо понимать так: "позволяет исполнять любые валидные хранимые процедуры и функции оракла, корректно передавая значения входных параметров и получая правильные значения выходных параметров и результатов функций". Как-то так... И в чем именно выражается отказ оракулевых процедур и функций от правильной работы? P.S. Как-то Вы пальцем в небо... Конкретнее нужно, конкретнее. Агрументы нынче в цене. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:11 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ И в чем именно выражается отказ оракулевых процедур и функций от правильной работы? P.S. Как-то Вы пальцем в небо... Конкретнее нужно, конкретнее. Агрументы нынче в цене. С функциями Nhibernate работает лишь через "select FUNCTION_1(:PARAM_1) as :RESULT_1 from dual" Кроме того, и в функциях и в процедурах Nhibernate не понимает OUT параметров, только если это не REF CURSOR. А Fluent Nhibernate - и того меньше :( Приходится комбинировать с хбм... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:24 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльС функциями Nhibernate работает лишь через "select FUNCTION_1(:PARAM_1) as :RESULT_1 from dual" Кто Вам такие глупости рассказал? КурдльКроме того, и в функциях и в процедурах Nhibernate не понимает OUT параметров, только если это не REF CURSOR. Код: plaintext 1. 2. тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:39 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Вот тут показана педаль под вызов процы вне пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:41 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, Вы сами-то попробовали хоть раз исполнить то, куда меня носом тычете? ;) Или быстренько нагуглили "по ключевым словам"? Из приведенных Вами примеров с функцией один использует "select scalartest.getnumberofrows as TotalRows from dual" (как я и говорил постом ранее), а другой - требует получения IDbCommand (что перечеркивает все достоинства Nhibernate). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 10:53 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, ОБЕЩАЮ ПРИЗНАТЬ СЕБЯ ДЯТЛОМ, А ВАС - ВЕЛИКИМ ГУРУ причем не в этой ветке, а заглавной темой на форуме, если Вы подыщете вариант вызова ХП и функций оракла с OUT-параметрами без использования IDBConnection. Для меня это не вопрос досужего спора, а вариант решения проблемы в проекте. Мне нужен простенький пример, содержащий скрипт функции типа FUNCTION CheckPassword(Login_ IN EMPLOYEES.Login%TYPE, Password_ IN Varchar2, ID_Employee_ OUT EMPLOYEES.ID_Employee%TYPE) RETURN VARCHAR2 ... Nhibernate мэппинг (причем не важно, какого типа - хбм или флюент) Код C# вызова такой процедуры (да хоть VB.NET), чтобы корректно передать IN параметры, получить OUT-параметр и результат. Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 11:29 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльИз приведенных Вами примеров с функцией один использует "select scalartest.getnumberofrows as TotalRows from dual" (как я и говорил постом ранее) Это просто пример. Никто не запрещает юзать недуальность. Курдльа другой - требует получения IDbCommand (что перечеркивает все достоинства Nhibernate). Почему перечеркивает? Курдльесли Вы подыщете вариант вызова ХП и функций оракла с OUT-параметрами без использования IDBConnection. Мне обычно плевать на признания :) Это работает и славно. Остальное втопку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 11:46 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУПочему перечеркивает? ... Это работает и славно. Остальное втопку. Когда выбираешь технологию для проекта - взвешиваешь все "за" и "против". Одним из крупных "за" Nhibernate декларировалась "независимость от СУБД". А оказывается, что это не так. Подход, при котором приходится танцевать с бубном, перечеркивает это достоинство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 12:00 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
КурдльОдним из крупных "за" Nhibernate декларировалась "независимость от СУБД". А оказывается, что это не так. Глупости. Всё крутится на основе провайдеров к БД. Если провайдер может работать с какими-то специфическими фичами СУБД, значит и хибер сможет. Я Вам привел пример кастома провайдера, но Вы смотрите не в корень, а на поверхность (увидели дуал и начали вопить, что я левый пример дал). КурдльПодход, при котором приходится танцевать с бубном, перечеркивает это достоинство. IDBConnection - это танец с бубном? Тогда, батенька, Вам не в программисты, а в сельское хозяйство. P.S. Для каких-то ветвей решения можно заюзать и IDBConnection, ничего предсудительного тут нет. P.S2. Тоже самое и в других ORM, например в Linq to SQL. Возьмем классическую задачу: удаление сущности по ID (без лишнего перезапроса). Custom context Код: 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. Как видите, и тут DbCommand приходит на помощь. P.S3. Прекращайте ныть и начинайте работать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 12:21 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ IDBConnection - это танец с бубном? Тогда, батенька, Вам не в программисты, а в сельское хозяйство. Я давно и успешно использую ADO.NET и про IDBConnection кое-что понимаю. Так бы и использовал его дальше, если бы не понадобилось разработать вэб-модуль к существующей системе. И вот же черт дернул ввязаться в "современные технологии"... Хорошо хоть заказчик внутренний и сроки не горят. А Вы любите, чтобы последнее слово за Вами оставалось? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 12:44 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Курдль, современные технологии тут как-бы непричём. Для себя просто попытайтесь ответить: нужно ли оно Вам. Если нужно - забейте на религиозные мотивы и прочие порывы души: просто исполуйте ORM и всё. Если сомневаетесь - пишите по-старинке и не пукайте :) P.S. От себя отвечу, ORM сильно упрощает жизнь. Особенно в поддержке кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 13:19 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
МСУ, современные технологии всегда причем! "Упрощение жизни" для меня - это возможность в кратчайшие сроки и с меньшими затратами выпускать отказоустойчивое и безошибочное ПО. Пока у меня есть время поупражняться более "для себя", чем "для дела". Но если придет время подбирать команду и технологию для крупного проекта - я должен знать преимущества и подводные камни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 13:34 |
|
||
|
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
|
|||
|---|---|---|---|
|
#18+
Подводные камни есть в любом деле, даже в уборке картофеля с картофельных полей. Во-вторых, только на реальных проектах Вы сможете вполтную прочувствовать хибер. Иначе, это как в магазине: я пришел покупать конфету, до этого ее не пробовав. Я много читал про нее, про нее много говорили. Но, пока реально не попробуешь - не скажешь, какого вкуса она. Вы поковырялись, слегонца прочувствовали хиб. Этого достаточно. Теперь скажите, нужно ли оно Вам? Если да - вперёд, если нет - не ипите моск форумчанам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2010, 13:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=17&tid=1351219]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 428ms |

| 0 / 0 |
