Archiwum

Archiwum / 2013 / Marzec
  • Zrób to sam - NHibernate Profiler

    20.03.2013

    Średnio raz w miesiącu NHibernate doprowadza mnie do białej gorączki wyjątkiem: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. Powodem powstania tego wyjątku jest niewypełnienie (lub błąd w definicji mapowania) właściwości DateTime obiektu biznesowego zapisywanego do bazy danych. Problem w tym, że treść tego komunikatu jest tak ogólna, że w przypadku pracy z domeną złożoną z więcej niż kilku obiektów namierzenie źródła problemu może potrwać… bardzo długo. Nie pomoże tutaj nawet Sql Profiler z Sql Server.

    Czytaj więcej...
  • NHibernate i serializacja drzewa obiektów przy użyciu biblioteki Json.NET

    07.03.2013

    Jeżeli korzystasz z NHibernate i Json.NET i chcesz bezpośrednio serializować obiekty biznesowe pobrane z bazy danych przy użyciu NHibernate do formatu JSON to bardzo szybko napotkasz na problem w postaci wyjątku - Error getting value from 'ReadOnly' on 'NHibernate.Proxy.DefaultLazyInitializer'. Problem ten powstaje w momencie gdy próbujesz serializować encję pobraną przez NHibernate, która posiada niezainicjowane wiązania z innymi encjami (obiekty proxy do obsługilazy loading). Klasa serializująca przemierza drzewo obiektów w poszukiwaniu publicznych właściwości obiektów. Po natrafieniu na proxy, nie umie go przetworzyć na JSON i rzucany jest wyjątek.

    Czytaj więcej...