بایگانی برچسب: NHibernate

‫تعیین نوع fetch در Search APIهای NHibernate

برای آن که NHibernate بتواند به طور بهینه از Caching استفاده نماید باید Fetch در Entityها و Queryها به طور مناسبی تعریف شده باشد. Fetch به طور کلی به NHibernate می‌گوید sql دریافت اطلاعات از دیتابیس را چطور تولید کند. یک select کلی از همه جداول با استفاده از outer joinهای متعدد یا selectهای جداگانه …

‫لذت Low Level

یک زمانی عاشق برنامه‌نویسی به زبان Assembly بودم. هر چند که هیچ وقت به طور جدی به اسمبلی نپرداختم، اما همیشه ور رفتن با دستورات JMP و SUM و کار کردن با رجیسترها را دوست داشتم. داس را هم خیلی دوست داشتم چون حس می‌کردم با داس به خود اصل کامپیوتر دسترسی مستقیم دارم. با …

‫مشاهده لاگ NHibernate در Visual Studio

اگر پنجره Output را در ویژوال استودیو به هنگام Debug باز کرده و Show output from را برابر Debug قرار داده باشید می‌بینید که ویژوال استودیو خیلی از فعالیت‌های داخلی برنامه را از جمله Load اسمبلی‌ها یا Exceptionهای برنامه را مدام در آنجا فهرست می‌کند. همین کار را در مورد فعالیت‌های داخلی NHibernate هم می‌توان …

‫NHibernate Caching و نوع Fetch در Entityها

موقع فعال‌سازی Cache در NHibernate متوجه شدم که فراخوانی بعضی Entityها و بعضی از Queryها از دیتابیس شامل چند join است و عملاً از آن چیزی که در Cache ممکن است موجود باشد استفاده‌ای نمی‌شود. به عنوان مثال فرض کنید کلاس Teacher و Student موجود باشد به نحوی که از کلاس Student یک Association به …

‫‫استفاده از Stored Procedure و Trigger در NHibernate و تاثیر آنها بر Caching

در رابطه با NHibernate رایج است که هر جا حس کردیم NHibernate یا مهارت خودمان در استفاده از آن دچار محدودیت است فوراً دست به کار شده و ضمن دور زدن مکانیزم NHibernate session managment مستقیماً از SQL در برنامه‌مان استفاده کنیم. مثلاً وقتی که نمی‌توانیم از eventهای مرتبط با Save/Update در NHibernate به درستی …

‫مشکلات نوع داده DateTime در NHibernate

در NHibernate فیلدهایی که از نوع DateTime تعریف می‌شوند دارای مشکلاتی هستند. از جمله: ۱- اگر به جای DateTime?‎ (نوع nullable) از DateTime استفاده کنید، به خاطر این که SQL Server Min. DateTime با ‎.Net Min DateTime تفاوت دارد، آبجکت خود به خود dirty شده و احتمالاً یک update اضافه به سیستم تحمیل خواهد شد. …

Entity auditing in CastleActiveRecord

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 در NHibernate با استفاده از اپراتورهای Projection

یکی از راه‌های توصیه شده برای افزایش Performance در Queryهای دیتابیس، پرهیز از استفاده‌های بی‌مورد از select * from some_table می‌باشد. راه حل توصیه شده استفاده از projection و برگرداندن صرفاً ستون‌های مورد نیاز از دیتابیس است. مثلاً باید از select col1, col2 from some_table استفاده شود. در همین راستا LINQ-to-NHibernate هم پشتیبانی خوبی از …

‫محدودیت‌های Castle ActiveRecord

Castle ActiveRecord یک کتابخانه مفید برای استفاده از NHibernate است. این کتابخانه هم کار mapping را مشابه Fluent NHibernate ساده می‌کند و هم کار مدیریت session و خیلی کارهای دیگر را خودش مدیریت می‌کند. به طوری که استفاده از NHibernate بسیار ساده‌تر شود. Castle ActiveRecord در واقع پیاده‌سازی Design Patternی به همین نام یعنی Active …

Second Level Cache in Castle ActiveRecord

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, …