برای آن که NHibernate بتواند به طور بهینه از Caching استفاده نماید باید Fetch در Entityها و Queryها به طور مناسبی تعریف شده باشد. Fetch به طور کلی به NHibernate میگوید sql دریافت اطلاعات از دیتابیس را چطور تولید کند. یک select کلی از همه جداول با استفاده از outer joinهای متعدد یا selectهای جداگانه …
یک زمانی عاشق برنامهنویسی به زبان Assembly بودم. هر چند که هیچ وقت به طور جدی به اسمبلی نپرداختم، اما همیشه ور رفتن با دستورات JMP و SUM و کار کردن با رجیسترها را دوست داشتم. داس را هم خیلی دوست داشتم چون حس میکردم با داس به خود اصل کامپیوتر دسترسی مستقیم دارم. با …
اگر پنجره Output را در ویژوال استودیو به هنگام Debug باز کرده و Show output from را برابر Debug قرار داده باشید میبینید که ویژوال استودیو خیلی از فعالیتهای داخلی برنامه را از جمله Load اسمبلیها یا Exceptionهای برنامه را مدام در آنجا فهرست میکند. همین کار را در مورد فعالیتهای داخلی NHibernate هم میتوان …
موقع فعالسازی Cache در NHibernate متوجه شدم که فراخوانی بعضی Entityها و بعضی از Queryها از دیتابیس شامل چند join است و عملاً از آن چیزی که در Cache ممکن است موجود باشد استفادهای نمیشود. به عنوان مثال فرض کنید کلاس Teacher و Student موجود باشد به نحوی که از کلاس Student یک Association به …
در رابطه با NHibernate رایج است که هر جا حس کردیم NHibernate یا مهارت خودمان در استفاده از آن دچار محدودیت است فوراً دست به کار شده و ضمن دور زدن مکانیزم NHibernate session managment مستقیماً از SQL در برنامهمان استفاده کنیم. مثلاً وقتی که نمیتوانیم از eventهای مرتبط با Save/Update در NHibernate به درستی …
در NHibernate فیلدهایی که از نوع DateTime تعریف میشوند دارای مشکلاتی هستند. از جمله: ۱- اگر به جای DateTime? (نوع nullable) از DateTime استفاده کنید، به خاطر این که SQL Server Min. DateTime با .Net Min DateTime تفاوت دارد، آبجکت خود به خود dirty شده و احتمالاً یک update اضافه به سیستم تحمیل خواهد شد. …
In my Castle ActiveRecord based application I have a base class named ARSuperClass that all my domain entities except than EntityLogger inherit from it instead of inheriting from ActiveRecordBase. I have ModifyDate and CreateDate fields in ARSuperClass that must be updated each time an entity is created or updated. Additionally each creation/updating operations must be …
یکی از راههای توصیه شده برای افزایش Performance در Queryهای دیتابیس، پرهیز از استفادههای بیمورد از select * from some_table میباشد. راه حل توصیه شده استفاده از projection و برگرداندن صرفاً ستونهای مورد نیاز از دیتابیس است. مثلاً باید از select col1, col2 from some_table استفاده شود. در همین راستا LINQ-to-NHibernate هم پشتیبانی خوبی از …
Castle ActiveRecord یک کتابخانه مفید برای استفاده از NHibernate است. این کتابخانه هم کار mapping را مشابه Fluent NHibernate ساده میکند و هم کار مدیریت session و خیلی کارهای دیگر را خودش مدیریت میکند. به طوری که استفاده از NHibernate بسیار سادهتر شود. Castle ActiveRecord در واقع پیادهسازی Design Patternی به همین نام یعنی Active …
Second level cache is different than first level cache. It acts on session factory level not each individual session. In order to setup second level cache in a Castle ActiveRecord application consider following points: 1. Settings of second level cache in Castle ActiveRecord is basically as same as NHibernate. 2. In addition of web.config/app.config settings, …