برای آن که NHibernate بتواند به طور بهینه از Caching استفاده نماید باید Fetch در Entityها و Queryها به طور مناسبی تعریف شده باشد. Fetch به طور کلی به NHibernate میگوید sql دریافت اطلاعات از دیتابیس را چطور تولید کند. یک select کلی از همه جداول با استفاده از outer joinهای متعدد یا selectهای جداگانه …
موقع فعالسازی Cache در NHibernate متوجه شدم که فراخوانی بعضی Entityها و بعضی از Queryها از دیتابیس شامل چند join است و عملاً از آن چیزی که در Cache ممکن است موجود باشد استفادهای نمیشود. به عنوان مثال فرض کنید کلاس Teacher و Student موجود باشد به نحوی که از کلاس Student یک Association به …
در رابطه با NHibernate رایج است که هر جا حس کردیم NHibernate یا مهارت خودمان در استفاده از آن دچار محدودیت است فوراً دست به کار شده و ضمن دور زدن مکانیزم NHibernate session managment مستقیماً از SQL در برنامهمان استفاده کنیم. مثلاً وقتی که نمیتوانیم از eventهای مرتبط با Save/Update در NHibernate به درستی …
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, …
بعضی پیغام خطاها آنقدر سمج هستند و آن قدر منبع نامعلومی دارند که میتوان به آنها لقب لعنتی، کشنده یا حتی دهن صاف کن داد. به تازگی یکی از این پیغام خطاهای کشنده برای من اتفاق افتاد. زمانی که در حال فعالسازی Caching سطح دوم برای یک برنامهی مبتنی بر Castle ActiveRecord بودم دچار خطای …
While I was trying to use first level cache in a Castle ActiveRecord based application I found some points that like to share: 1. First level cache is alive within a single session (NHibernate’s ISession) only. 2. First level cache is enabled by default and can not be disabled. 3. If you don’t use SessionScope …