‫استفاده بهینه از Lazy Loading

برای Lazy Loading در NHibernate روال زیر را انجام داده بودم. lazy را برای همه mappingها true کرده بودم. در web.config هم همینطور. سپس هر جا که lazy مشکل پیدا می‌کرد و خطای LazyInitializationException اتفاق می‌افتاد، آن association یا collection را با استفاده از کلاس NHibernateUtil.Initialize پیش load می‌کردم تا مشکل حل شود. این راه حل خیلی هم غلط نیست، اما می‌توان برای رفع مشکل از دست رفتن session از روش‌های زیر هم استفاده کرد:

۱- در associationهای مشکل دار از outer-join = true استفاده شود.
۲- در query APIهای مختلف هم می‌توان نوع outer-join را تعیین کرد.

باید دقت کرد که نوع outer-joinی که در سطح mapping یک entity تعریف می‌شود قابل override در query یا هر جای دیگر است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *