powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
69 сообщений из 69, показаны все 3 страниц
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36707378
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!
Работать с NHibernate как-то трудновато. В стандартном ADO.NET я привык, что мои ошибки вылавливаются корректно - с указанием сути, и главное, - места, где я их допустил.
А вот при использовании NHibernate с этим проблемы. Получаю, например, ошибку "Индекс за пределами диапазона" и начинаю уродоваться - в каком же это классе я что-то упустил? Или не в описании, а в мэппинге? Или не в нем самом, а в связанном классе? Иногда ошибка вылезает при загрузке приложения (где я объявлял параметры сессии и т.п.). Тогда я не получаю даже вразумительного сообщения о проблеме...
На поиск подобных ошибок пока что уходит подавляющее время разработки :(
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36707453
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так никто лёгкой жизни с NHibernate и не обещал.
Может стоит наконец прочитать книжку, и вскурить документацию, дабы корректно писать маппинги и конфиг NHibernate?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36707515
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorТак никто лёгкой жизни с NHibernate и не обещал.
Может стоит наконец прочитать книжку, и вскурить документацию, дабы корректно писать маппинги и конфиг NHibernate?

Пока что имею на вооружении лишь книжку "Nhibernate in action".
Пишу на fluent-е, а для него литературы мало.
Многие примеры "компилирую" в вид, который мне кажется правильным.
Ошибки получаю в тривиальных случаях, на которых авторы "трудов" даже не заостряют внимание.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36707525
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

прикрутите log4net
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36707576
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NHibernate in Action прочитать обязательно.
А чтобы не было ошибок, освойте ТDD. Тем более для Fluent NHibernate доступен инструментарий для тестирования сохраняемости.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708297
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаете, коллеги!
Пока исполняешь учебные примеры из горячо любимой Northwind, смотришь видеоуроки и читаешь книжки - вроде все шоколадно получается.
Как только садишься за реальный проект с не менее горячо любимым ораклом его ХП, рефлексивными и наследственными связями - становится как-то уныло :(
В общем, будь проклят тот день, когда я сел за баранку йэтого пылесоса!!! (с) ;)
Черт меня дернул дорабатывать старый проект на "современной платформе"...

Пойду прикручивать Log4Net.. В очередной раз (а то с первого раза он у меня как-то не прикрутился).
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708555
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настройте маппинги NHibernate сами, это единственная рутинность. Забейте на автофлюенты и прочую муть, ручной мап даст б о льшую гибоксть. В остальном, с хибером работать очень приятно.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708666
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Хехе Приятная рекомендация (новичку в этом деле.)мапить в ручную Northwind с хуетучами таблиц, связей и составных ключей.
Может вернуться к Афтор->Книжка? и там попробовать в рукопашную?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708718
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиХехе Приятная рекомендация (новичку в этом деле.)мапить в ручную Northwind с хуетучами таблиц, связей и составных ключей.
В чём сложность нарыть в гугле готовые маппинги под семпловую базу? Религия?
Где-то в степиМожет вернуться к Афтор->Книжка? и там попробовать в рукопашную?
А может включить моск и начать писать код? Каждый выбирает, что ему проще.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708775
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
у меня нет особых шансов юзать автомаппинг, т.к. я делаю надстройку к существующей АС.
База данных в ней создана давно, но весьма корректно с точки зрения архитектуры и нотаций.
Как я понимаю, чтобы воспользоваться автомэппингом, надо придерживаться специальных соглашений по построению БД. Кстати - я глянул мельком на соглашения по именованию и припух - они катастрофически противоречат лучшим практикам построения БД! Напр, большинство промышленных CASE средств построения моделей БД требуют, чтобы коды полей были уникальными. А это значит, что поле ID в каждой сущности - не прокатит.
Видимо это хорошо для тех, кто "проектирует" БД вручную, типа "CRESTE TABLE ..."
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708804
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Дело в том, что NHibernate придумали любители DDD. Их представление о проектировании БД несколько отличается от традиционного data-centric подхода. И что-то я не припоминаю в прочитанных книгах по DDD даже упоминания о промышленных CASE-средствах проектирования БД.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708823
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНапр, большинство промышленных CASE средств построения моделей БД требуют, чтобы коды полей были уникальными. А это значит, что поле ID в каждой сущности - не прокатит.
Видимо это хорошо для тех, кто "проектирует" БД вручную, типа "CRESTE TABLE ..."
Да глупости это всё. У меня все таблицы имеют название "ID" и всё крутится на хибере. Никаких проблем тут нет. Ровно и наоборот. Называйте поля как хотите, автомапу всё-равно.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36708865
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,
я не вижу пока четко, откуда выросли ноги. DDD или TDD...
Тут больше борьбы между приверженцами ООП и теми, кто не видит в нем панацею (как я).
Самые ярые из первых вообще бы отменили реляционную модель за ненадобностью. Их мечта - безупречные персистентные объекты. А нынешняя суета вокруг ORM - это только средство их воплощения.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709088
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиКурдль,

прикрутите log4net

Раньше я его недооценил!
В этот раз он тоже, правда, не сильно помог.
Выдал перед ошибкой SQL запрос без изъяна... Зато сравнив мэржилкой лог с ошибкой и лог без ошибки + немного танцев с бубном = вычислил, что в мэппинге поле указано дважды - в теле мэппинга и в reference. Когда убрал из тела - ошибка исчезла, отображаться объекты стали корректно и записываться в БД - тоже. Только перестали работать комбобоксы в представлениях :(
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709171
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

вот некоторые пуанты для танцев, могут где-то помочь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
                ISession ses = sessionFactory.OpenSession(); 
                IDictionary Metadata = sessionFactory.GetAllClassMetadata();
                foreach (DictionaryEntry entry in Metadata)
                {
                    Type type = (Type)entry.Key;
                    try
                    {
                        //тут можно сделать  свою проверку
                     var result=   ses.CreateCriteria(type).SetMaxResults(1).List();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(string.Format("Ошибка в сущности {0}", type.FullName));
                    }
                }
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709203
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,


Не удалось привести тип объекта "NHibernate.Util.UnmodifiableDictionary`2[System.String,NHibernate.Metadata.IClassMetadata]" к типу "System.Collections.IDictionary".


Попробую все же прикрутить.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709226
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

У меня получилось что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            ISession ses = sessionFactory.OpenSession();
            IDictionary<string, NHibernate.Metadata.IClassMetadata> Metadata = sessionFactory.GetAllClassMetadata();
            foreach (KeyValuePair<string, NHibernate.Metadata.IClassMetadata> entry in Metadata)
            {
                Type type = entry.GetType();
                try
                {
                    //тут можно сделать  свою проверку
                    var result = ses.CreateCriteria(type).SetMaxResults(1).List();
                }
                catch (Exception ex)
                {
                    throw new Exception(string.Format("Ошибка в сущности {0}: {1}", type.FullName, ex));
                }
            }
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709264
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Это скорее из за версионости NH1.2 and NH 2.1
надо было попробовать простой cast
(IDictionary)sessionFactory.GetAllClassMetadata();
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709506
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Простой cast и вызвал упомянутую мной ошибку.

Но главный вывод для меня из всей темы: "Нельзя мапить поля дважды - собственно в маппинге полей и потом в маппинге связей".
Теперь не могу понять, как в ASP.NET MVC использовать списки выбора - незамапленные ключевые поля не обрабатываются корректно.

Например, приведенная ниже конструкция больше не работает
Код: plaintext
1.
                <%= Html.DropDownList("STATUS_ID", (IEnumerable<SelectListItem>)ViewData["Statuses"], new { @style = "width: 420px;" })%>
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709562
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Честно сказать не могу понять, что такое не замапленные ключевые поля, ключ
должен быть..
вот почитайте, вроде толковый перевод
тынц
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709849
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Объясню на еще более простом примере. (Первоисточник: 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.
public class ProductMap : ClassMap<Product>  
{
      public ProductMap()
      {
         Table("Products");
         Id(x => x.Id).GeneratedBy.Native();
         Map(x => x.Description);
         Map(x => x.Name);
         Map(x => x.Price);
         HasMany(x => x.Orders)     
                      .KeyColumn("ProductId")     
                      .Inverse() 
                      .Cascade.AllDeleteOrphan();
      }
  }


  public class OrderMap:ClassMap<Order>
  {
       public OrderMap()
       {
         Table("Orders");
         Id(x => x.Id).GeneratedBy.Native();
         Map(x => x.NumberOfItems);
//         Map(x => x.ProductId);  поле ProductId добавлено в это место мной
         Map(x => x.Customer);
         References(x => x.Product, "ProductId");   // поле ProductId в первоисточниках мапится только здесь
       }
  }

Закомментированная строка добавлена мной, хотя в первоисточниках поля, являющиеся внешними ключами, мапится только в 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).
Сейчас с ними пытаюсь разобраться.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709864
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем маппить ProductId? Зачем вам этот Id вообще надо? Если сильно хочется то вызвать Order.Product.Id что мешает?

КурдльГде-то в степи,
- получаю проблемы при update (Index was out of range).
Сейчас с ними пытаюсь разобраться.

Стек в студию.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709911
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Моя проблема в том, что я впрягся сразу в 2 малознакомых для меня направления - вэб и ORM.
И пока у меня больше вопросов, чем ответов. Некоторые я откладываю на будущее.
В данный конкретный момент меня шибко волнует, как заставить работать визуальный компонент Html.DropDownList ( http://sql.ru/forum/actualpost.aspx?bid=12&tid=769811&mid=9006997&p=1#9006100), не имея упомянутого Вами "ProductId" (в моем случае STATUS_ID).
И, согласитесь, - как-то не кошерно иметь персистентный объект, в котором не все поля получают значения из БД, когда Вы этого ожидали...
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709924
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

А почему именно NHibernate? Одно дело, если есть опыт разработки на Java - тогда есть резоны не отказываться от привычных средств. Если же такового нет - чем голый ADO.NET с LINQ не устраивает? Про ADO EF молчу - сам не пользовал.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709935
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysauxКурдль,

А почему именно NHibernate? Одно дело, если есть опыт разработки на Java - тогда есть резоны не отказываться от привычных средств. Если же такового нет - чем голый ADO.NET с LINQ не устраивает? Про ADO EF молчу - сам не пользовал.

Да, конечно, уроки и примеры по ASP.NET MVC пройдены с LINQ-ом. Посматривал и на EF...
Но есть одна маленькая проблема, под названием oracle!
Раньше MS стеснялся выпускать продукты, не поддерживающие его...
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709937
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Эмм, если вы про провайдеры .NET под Оракл - нужно пользовать не дефолтные, которые идут с фреймворком, а от самого оракла. Работают под NET4 включительно, поддерживают все "положенные" в .NET фичи, кроме разве EF - пока поддержки нет, но уже работают над этим.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709941
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль
Да, конечно, уроки и примеры по ASP.NET MVC пройдены с LINQ-ом. Посматривал и на EF...
Но есть одна маленькая проблема, под названием oracle!
Я так понимаю - ASP.NET приложение под Oracle?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709942
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysaux,

и с LINQ работают?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709945
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Да.
http://otn.oracle.com/dotnet
Честно, удивлен что вы про них не слышали. ЕМНИП, оракловцы делают этот провайдер в тесном сотрудничестве с МС, и сами МС всегда рекомендуют использоватеь провайдеры от Оракла, а не дефолтный.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709947
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльSolYUtor,
В данный конкретный момент меня шибко волнует, как заставить работать визуальный компонент Html.DropDownList ( http://sql.ru/forum/actualpost.aspx?bid=12&tid=769811&mid=9006997&p=1#9006100), не имея упомянутого Вами "ProductId" (в моем случае STATUS_ID).
Так нарисуйте отдельный класс-обёртку DropDownItem, который будет возвращать нужные свойства из объектов.

Курдль
И, согласитесь, - как-то не кошерно иметь персистентный объект, в котором не все поля получают значения из БД, когда Вы этого ожидали...
Некошерно маппить ключевое поле дважды.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709949
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Точнее linq to dataset - точно работает, глюков не встречал, и не слышал что есть.
Linq to SQL - не использовал, да и смысла особого не вижу.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709965
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysaux,

я использую OracleDataAccess из последних. Ткните меня в ссылку, что он подключается к LINQ.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709974
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor
Так нарисуйте отдельный класс-обёртку DropDownItem, который будет возвращать нужные свойства из объектов.
Это танцы с бубном. Должен быть более изящный вариант.
SolYUtor
Некошерно маппить ключевое поле дважды.
Да мне хоть трижды! Я готов 1 раз потрудиться над маппингом, чтобы все остальное время класс вел себя так, как задумано.
Какого черта Get возвращает null в этом поле, если в БД прописано конкретное значение?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709978
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Вот так навскидку - не нашел ссылок. Явных утверждений, что НЕ поддерживает - тоже не нашел.
А то что (не только)у меня работает linq к typed датасетам, построенным из оракловых табличек - не годится? Если не ошибаюсь, linq может обращаться к любым данным - лишь бы провайдер реализовал интерфейс IQueryable, т.е. это немного не к Ораклу вопрос.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709983
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль Ткните меня в ссылку, что он подключается к LINQ.
Оп, нашел на forums.oracle.com - Linq-to-Oracle(я так понимаю это LinqToSQL?), как и ADO.NET EF - еще не реализованы.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709985
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysaux,

я честно скажу, что не знаком с надстройкой Fluent и никогда ее не пользовал,
может лень матушка, но придерживаюсь классического стиля на XML, благо мапперов хватает.
Ну и в общем вам советую вернуться к классическому мапу, как более документированному
аки разумному и более понятному ( мое имхо).
попробуйте сделать - убрать из ордера References, ProductId замапте.
а вытаскиванье продукта в ордере, сделайте из акцкссора Productа прямо в классе Ордер через
ses.Get<>(),
вы же ордер через продукт вставлять будете это будет не криминально, и ленивая загрузка
сохранится, Fluent я думаю это позволяет, на xml, такие трюки возможны..
посмотрите похожий пример на Fluentе http://netcoder.ru/blog/csharp/129.html
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709987
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysauxКурдль,
А то что (не только)у меня работает linq к typed датасетам, построенным из оракловых табличек - не годится?

Я не так уж глубоко копал, но что даст linq к датасэтам? И вообще, зачем я тогда отказался от любимых датасэтов в пользу ORM?

LINQ и Nhibernate дают полный цикл ORM преобразований. А что дает linq к датасэтам?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709991
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль
LINQ и Nhibernate дают полный цикл ORM преобразований. А что дает linq к датасэтам?

"Полноценные" ORM не использовал, а linq к датасетам дает простой и интуитивный способ выборки данных из таблиц. ИМХО, проще написать
Код: plaintext
1.
2.
3.
from a in table
where a.NAME == b
orderby a.RECORD_DATE
select a
нежели городить циклы с множеством if-ов и прочим.

А если можно, "в двух словах" - какие преимущества дает ОРМ? Как бы в датасетах тоже замаплены таблицы, и у нас есть объекты DataTable, dataRow, к которым можно обращаться как к объектам, не заморачиваясь, какой синтаксис SQL у конкректной СУБД.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709993
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
Спасибо!
Я попробую.
Только сначала попытаюсь разобраться "по-хорошему" - вдруг я где-то недосмотрел?
Танцевать с бубном я уж привык, как только взялся за Nhibernate. Может это причуды oracle...
Интересно, есть ли у кого этот же пример с Nhibernate и MS SQL? Возвращается ли там null в OrderId или значение?..
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709995
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysaux[quot Курдль]
"Полноценные" ORM не использовал
это как езда на запорожце и мерседесе, вроде все ездють, а кайф от езды разный.
вы еше не вспомнили типизированы датасет, интересно - этим атавизмом ктонить пользуется
кроме батонокидателей?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36709997
sysaux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Ну, видимо я батонокидатель.
Просто не видя плюсов в ОРМах, не хочу кидаться их применять -только потому что модно.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710000
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysaux,

Я уже говорил, что не в LINQ, Nhibernate и даже не в ORM дело, а в ООП.
DDD, а особенно - TDD требуют возврата к безупречной объектной модели предметной области.
Великолепные порождения ADO.NET - многотабличные датасэты со встроенной поддержкой целостности данных и т.д. не отвечают их концепции.
Главное - объектная модель, а ORM - лишь один из методов практической реализации.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710004
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
вы еше не вспомнили типизированы датасет, интересно - этим атавизмом ктонить пользуется
кроме батонокидателей?
Я с удовольствием пользуюсь. А в чем они хуже нетипизированных?
Чем запись
DataSet1.Tables["Orders"]
лучше
DataSet1.Orders?
Неужели тем, что в первом случае ошибку на этапе компиляции не выявить и intellisense не работает?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710699
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНо есть одна маленькая проблема, под названием oracle!
Раньше MS стеснялся выпускать продукты, не поддерживающие его...
Sample Entity Framework Provider for Oracle
P.S. Но, вообще, лично я бы рекомендовал хибер под оракуль.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710733
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Спасибо! Я разглядывал это произведение программистского искусства.
Пока что доверия оно не вызвало. Видел я и промышленные продукты сторонних производителей типа: http://www.devart.com/dotconnect/oracle/
Но они стоят денег и пока не понятно, чего от них можно ожидать.

Кстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами? http://www.sql.ru/forum/actualthread.aspx?tid=769811&pg=1#9006962
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710859
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльКстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами?
Я бы маппил только в теле маппинга полей и всё. За целостность данных пусть БД отвечает, а не клиент.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710890
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКурдльКстати, а как Вы считаете, следует ли мапить поля дважды (в теле маппинга полей и в маппинге связей), если они являются внешними ключами?
Я бы маппил только в теле маппинга полей и всё. За целостность данных пусть БД отвечает, а не клиент.

Целостность данных я даже пока не рассматриваю. Маппить связи нужно, чтобы получать связанные объекты. Напр. если я хочу отобразить подробности о книге, то могу вытянуть связанный "Много-к-одному" объект "автор" с его атрибутами а из него - объект "адрес" и т.п. Как иным образом можно это получить, не замапив связи?
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем Вам маппить второй раз поле? Замапили сущность и всё.

Чтобы потом через значение кода вытянуть сущность (в отличие от тупого EF и LINQ 2 SQL), вовсе необязательно вытягивать из БД эту сущность (лишний запрос).

Достаточно просто выкрутиться так:

Код: plaintext
session.Delete(new Customer{ CustomerId = 3});

Согласен, бывают такие ситуации, что у дочерней записи требуется узнать значение ID родителя. Ну тут только по лэзи перезапрашивать... :(
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36710995
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА зачем Вам маппить второй раз поле? Замапили сущность и всё.

Мы пошли по кругу. Я привел пример, зачем может понадобиться такое поле, чуть раньше:
/topic/769811&pg=1#9006100
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36711077
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так возьмите значение замапленной сущности в декларативном коде так:

Код: plaintext
<%= Html.DropDownList("ENTITY_REF.STATUS_ID", (IEnumerable<SelectListItem>)ViewData["Statuses"], new { @style = "width: 420px;" })%>
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36711200
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

О!!! Это уже интереснее! Чувствую, что я Вас так просто не отпущу! ;)

Тогда как нужно заполнять данные для списков выбора? Я пользуюсь кодом из примера:
Код: plaintext
ViewData["Statuses"] = new SelectList(_dataManager.Status.GetStatuses(), "ID_STATUS", "NAME", t.STATUS_ID);
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36711232
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Биндить данные для комбобоксов нужно так, как это делают всегда. Когда набор сущностей прибиндился, то декларативно заюзать аттрибут парентовой (референсной) сущности можно так, как я показал в прошлом посте. Экспериментируйте.
P.S. Толко Вы должны понимать, что при бинде каждой сущности в комбобоксе будет происходить Lazy запрос на сервер.
P.S2. В плане отпимизации исполняемого SQL кода за такой подход обычно отрезают нижнюю челюсть. Поэтому, планируйте подобные выборки средствами серверных представлений, функций и/или хранимых процедур.
P.S3. ORM универсальный инструмент, а не оптимальный. Нужно это помнить.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712401
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
P.S. Но, вообще, лично я бы рекомендовал хибер под оракуль.

Спасибо за рекомендацию! К сожалению в ORM под NET с оракулем не разбежишься...
Но Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :(
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712446
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНо Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :(
Смотря что понимать под "полной мерой" ;)
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712470
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКурдльНо Вы в курсе, что хибер не работает в полной мере с ораклевыми ХП? :(
Смотря что понимать под "полной мерой" ;)

Это надо понимать так: "позволяет исполнять любые валидные хранимые процедуры и функции оракла, корректно передавая значения входных параметров и получая правильные значения выходных параметров и результатов функций".
Как-то так...
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712500
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльЭто надо понимать так: "позволяет исполнять любые валидные хранимые процедуры и функции оракла, корректно передавая значения входных параметров и получая правильные значения выходных параметров и результатов функций".
Как-то так...
И в чем именно выражается отказ оракулевых процедур и функций от правильной работы?
P.S. Как-то Вы пальцем в небо... Конкретнее нужно, конкретнее. Агрументы нынче в цене.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712533
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
И в чем именно выражается отказ оракулевых процедур и функций от правильной работы?
P.S. Как-то Вы пальцем в небо... Конкретнее нужно, конкретнее. Агрументы нынче в цене.

С функциями Nhibernate работает лишь через "select FUNCTION_1(:PARAM_1) as :RESULT_1 from dual"
Кроме того, и в функциях и в процедурах Nhibernate не понимает OUT параметров, только если это не REF CURSOR.
А Fluent Nhibernate - и того меньше :(
Приходится комбинировать с хбм...
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712575
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльС функциями Nhibernate работает лишь через "select FUNCTION_1(:PARAM_1) as :RESULT_1 from dual"
Кто Вам такие глупости рассказал?


КурдльКроме того, и в функциях и в процедурах Nhibernate не понимает OUT параметров, только если это не REF CURSOR.

Код: plaintext
1.
2.
<sql-query name="MyPackageTestSp"> 
    call call MyPackage.Test(:result, :id) 
</sql-query> 

тут
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712578
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут показана педаль под вызов процы вне пакета.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712613
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Вы сами-то попробовали хоть раз исполнить то, куда меня носом тычете? ;)
Или быстренько нагуглили "по ключевым словам"?
Из приведенных Вами примеров с функцией один использует "select scalartest.getnumberofrows as TotalRows from dual" (как я и говорил постом ранее), а другой - требует получения IDbCommand (что перечеркивает все достоинства Nhibernate).
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712698
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ОБЕЩАЮ ПРИЗНАТЬ СЕБЯ ДЯТЛОМ, А ВАС - ВЕЛИКИМ ГУРУ
причем не в этой ветке, а заглавной темой на форуме, если Вы подыщете вариант вызова ХП и функций оракла с 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-параметр и результат.

Заранее благодарен!
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712748
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльИз приведенных Вами примеров с функцией один использует "select scalartest.getnumberofrows as TotalRows from dual" (как я и говорил постом ранее)
Это просто пример. Никто не запрещает юзать недуальность.
Курдльа другой - требует получения IDbCommand (что перечеркивает все достоинства Nhibernate).
Почему перечеркивает?
Курдльесли Вы подыщете вариант вызова ХП и функций оракла с OUT-параметрами без использования IDBConnection.
Мне обычно плевать на признания :) Это работает и славно. Остальное втопку.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712788
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПочему перечеркивает? ... Это работает и славно. Остальное втопку.

Когда выбираешь технологию для проекта - взвешиваешь все "за" и "против".
Одним из крупных "за" Nhibernate декларировалась "независимость от СУБД".
А оказывается, что это не так.
Подход, при котором приходится танцевать с бубном, перечеркивает это достоинство.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712854
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльОдним из крупных "за" 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.
using System;
using System.Linq;
using System.Data.Common;
using System.Collections.Generic;

namespace ...
{
    public class EventsContext : EventsDataContext
    {
        public EventsContext()
            : base(System.Configuration.ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString)
        {
        }

        public int Delete<T>(IEnumerable<T> entities)
        {
            DbCommand command = this.GetCommand(entities.AsQueryable());
            string s = this.GetCommand(entities.AsQueryable()).CommandText;
            command.CommandText = "DELETE [t0]\r\n" + s.Substring(s.IndexOf("FROM"));
            command.Connection.Open();
            int records = command.ExecuteNonQuery();
            command.Connection.Close();
            return records;
        }
    }    
}


Как видите, и тут DbCommand приходит на помощь.

P.S3. Прекращайте ныть и начинайте работать :)
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36712944
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
IDBConnection - это танец с бубном? Тогда, батенька, Вам не в программисты, а в сельское хозяйство.

Я давно и успешно использую ADO.NET и про IDBConnection кое-что понимаю.
Так бы и использовал его дальше, если бы не понадобилось разработать вэб-модуль к существующей системе. И вот же черт дернул ввязаться в "современные технологии"... Хорошо хоть заказчик внутренний и сроки не горят.

А Вы любите, чтобы последнее слово за Вами оставалось? ;)
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36713072
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль, современные технологии тут как-бы непричём. Для себя просто попытайтесь ответить: нужно ли оно Вам. Если нужно - забейте на религиозные мотивы и прочие порывы души: просто исполуйте ORM и всё. Если сомневаетесь - пишите по-старинке и не пукайте :)
P.S. От себя отвечу, ORM сильно упрощает жизнь. Особенно в поддержке кода.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36713123
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, современные технологии всегда причем!
"Упрощение жизни" для меня - это возможность в кратчайшие сроки и с меньшими затратами выпускать отказоустойчивое и безошибочное ПО. Пока у меня есть время поупражняться более "для себя", чем "для дела". Но если придет время подбирать команду и технологию для крупного проекта - я должен знать преимущества и подводные камни.
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36713139
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подводные камни есть в любом деле, даже в уборке картофеля с картофельных полей.
Во-вторых, только на реальных проектах Вы сможете вполтную прочувствовать хибер. Иначе, это как в магазине: я пришел покупать конфету, до этого ее не пробовав. Я много читал про нее, про нее много говорили. Но, пока реально не попробуешь - не скажешь, какого вкуса она. Вы поковырялись, слегонца прочувствовали хиб. Этого достаточно. Теперь скажите, нужно ли оно Вам? Если да - вперёд, если нет - не ипите моск форумчанам :)
...
Рейтинг: 0 / 0
Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
    #36713796
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

плюсую
...
Рейтинг: 0 / 0
69 сообщений из 69, показаны все 3 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как отлаживать приложения с NHibernate? Как определять место и смысл ошибок?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]