2010/02/27

Upgrading NHibernate 1.0.2 to 2.1.2


We have a large application that is based on NHibernate 1.0.2. Recently we have noticed that if we want to utilize LINQ to NHibernate and some other new features of NHibernate, we must upgrade to latest version of NHibernate (2.1.2). I found a good starting point, started the migration process and here is problems I encountered:


1. Upgrade to new NHibernate dll.
2. Erased classes: ClassQueryCondition, HQLQuery, DataGraphQuery. These 3 classes are corporate level classes not NHibernate's. They were using some features of NH 1.0.2 that was not present in newer versions.
3. Using "NHibernate.Criterion" instead of "NHibernate.Expression" namespace. For example in case of "NHibernate.Expression.Expression.Eq". This change caused about 440 replacements.
4. Erasing or commenting anything using "DataGraphQuery" (corporate level class).
5. Replacements like "NHibernate.Expression.Eq" => "NHibernate.Criterion.Expression.Eq". This caused about 400 replacements.
6. Related configurations in app.config's and web.config's changed to this:








NHibernate.Dialect.MsSql2005Dialect
NHibernate.Connection.DriverConnectionProvider
NHibernate.Driver.SqlClientDriver
Server=****;Database=****;Integrated Security=False;User ID=***; password=***;
NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle
false




7. In all .hbm files replaced "" to "". default-lazy="false" is added because we are not using lazy loading feature of NHibernate.




2010/02/21

داستان بی‌سوادی ما

مدت‌ها زور زدیم، صفحات خیلی زیادی را دستکاری کردیم، سعی کردیم همه Exceptionها را handle کنیم، زور زدیم که entlib را به کار بگیریم، کلی پز دادیم، … که چی؟ که برنامه ما یک Error Logging خیلی قوی دارد، که لازم نیست کاربر بیچاره مدام برای ما عکس خطا بفرستد و شرح خطا بدهد و… الحق هم که خیلی خوب توانستیم از مفهوم Error Logging استفاده کنیم و خطاهای به وجود آمده را دقیق بفهمیم. اما بعد از این همه زور زدن تازه فهمیدیم که می‌توانستیم در مورد بیشتر Exceptionها آنها را مدیریت نشده رها کرده و وظیفه logging را به ASP.NET Health Monitoring یا ELMAH بسپریم. واقعا که بی‌سوادی و بی‌اطلاعی از فناوری‌های روز چقدر کار ما (توسعه‌دهندگان، برنامه‌نویسان) را سخت کرده و زمان ساخت نرم‌افزار را افزایش می‌دهد. اصلا بیخود نیست که می‌گویند هزینه تولید در ایران بالاست. یکیش خود ما نرم‌افزاری‌ها!

شما فکر می‌کنید چند جای دیگر را می‌توانیم صرفا با کمی به روز بودن بهبود بخشیم؟