همانطور که در مطلب "NHibernate 3.0 و عدم وابستگی مستقیم به Log4Net" عنوان شد، از اینترفیس جدید IInternalLogger آن میتوان جهت ثبت وقایع داخلی NHibernate استفاده کرد. اگر در این بین صرفا بخواهیم SQL های تولیدی را لاگ کنیم، خلاصهی آن به صورت زیر خواهد بود:public class LoggerFactory : ILoggerFactory{ public IInternalLogger LoggerFor(System.Type type) { if (type == typeof(NHibernate.Tool.hbm2ddl.SchemaExport)) //log it } pub ...
ORM های NHibernate و Entity framework روشهای متفاوتی را برای به روز رسانی کلید خارجی با حداقل رفت و برگشت به دیتابیس ارائه میدهند که در ادامه معرفی خواهند شد.صورت مساله:فرض کنید میخواهیم برنامهای را بنویسیم که ریز پرداختهای روزانهی ما را ثبت کند. برای اینکار حداقل به یک جدول گروههای اقلام خریداری شده، یک جدول حسابهای تامین کنندهی مخارج، یک جدول فروشندهها و نهایتا یک جدول صورتحسابهای پرداختی بر اساس جداول ذکر شده نیاز خواهد بود.ا ...
احتمالا مطلب "دات نت 4 و کلاس Lazy" را پیشتر مطالعه کردهاید. هر چند NHibernate 3.0 بر اساس دات نت فریم ورک 3 و نیم تهیه شده، اما شبیه به این مفهوم را در مورد بارگذاری به تاخیر افتادهی مقادیر خواص یک کلاس که به ندرت مورد استفاده قرار میگیرند، پیاده سازی کرده است. Lazy را در اینجا تنبل، به تعویق افتاده، با تاخیر و شبیه به آن میتوان ترجمه کرد؛ خواص معوقه!برای مثال فرض کنید یکی از خواص کلاس مورد استفاده، متن، تصویر یا فایلی حجیم است. در مک ...
اولین موردی که پس از دریافت NHibernate 3.0 ممکن است به چشم بخورد، نبود اسمبلی Log4Net است. مطابق درخواستهای کاربران، ارجاع مستقیم به این کتابخانه حذف شده و با یک اینترفیس عمومی به نام IInternalLogger جایگزین گشته است (قرار گرفته در فضای نام NHibernate.Logging). به این صورت میتوان از انواع و اقسام کتابخانههای ثبت وقایع نوشته شده برای دات نت استفاده کرد؛ مانند: log4net، Nlog، EntLib Logging و غیره.البته لازم به ذکر است که همان روش قبلی ...
ICriteria API در NHibernate پیاده سازی الگوی Query Object است. مشکلی هم که این روش دارد استفاده از رشتهها جهت ایجاد کوئریهای متفاوت است؛ به عبارتی Type safe نیست. ایرادی هم به آن وارد نیست چون پیاده سازی اولیه آن از جاوا صورت گرفته و مباحث Lambda Expressions و Extension Methods هنوز در آن زبان به صورت رسمی ارائه نشده است (در JDK 7 تحت عنوان Closures قرار است اضافه شود). NHibernate 3.0 از ویژگیهای جدید زبانهای دات نتی جهت ارائهی محصور ...
تصویر فوق، یکی از تصویرهایی است که شاید از طریق ایمیلهایی تحت عنوان "فقط در ایران!" به دست شما هم رسیده باشد. تصور کاربر نهایی (که این ایمیل را با تعجب ارسال کرده) این است که در اینجا به او گفته شده مثلا "مرتضی" را جستجو نکنید و امثال آن. چون برای او تفاوتی بین ی و ى وجود ندارد. همچنین بکار بردن "اقلامی" هم کمی غلط انداز است و بیشتر ذهن را به سمت کلمه سوق میدهد تا حرف.در ادامهی بحث آلرژی مزمن به وجود انواع "ی" و "ک" در بانک اطلاعاتی (+ ...
آشنایی با کتابخانه NHibernate Validatorپروژه جدیدی به پروژه NHibernate Contrib در سایت سورس فورج اضافه شده است به نام NHibernate Validator که از آدرس زیر قابل دریافت است:http://sourceforge.net/projects/nhcontrib/files/NHibernate.Validatorاین پروژه که توسط Dario Quintana توسعه یافته است، امکان اعتبار سنجی اطلاعات را پیش از افزوده شدن آنها به دیتابیس به دو صورت دستی و یا خودکار و یکپارچه با NHibernate فراهم میسازد؛ که امروز قصد بررسی آنرا ...
استفاده از Log4Net جهت ثبت خروجیهای SQL حاصل از NHibernateهنگام استفاده از NHibernate، پس از افزودن ارجاعات لازم به اسمبلیهای مورد نیاز آن به برنامه، یکی از اسمبلیهایی که به پوشه build برنامه به صورت خودکار کپی میشود، فایل log4net.dll است (حتی اگر ارجاعی را به آن اضافه نکرده باشیم) که جهت ثبت وقایع مرتبط با NHibernate مورد استفاده قرار میگیرد. خوب اگر مجبوریم که این وابستگی کتابخانه NHibernate را نیز در پروژههای خود داشته باشیم، چرا ...
معرفی الگوی Repositoryروش متداول کار با فناوریهای مختلف دسترسی به دادهها عموما بدین شکل است:الف) یافتن رشته اتصالی رمزنگاری شده به دیتابیس از یک فایل کانفیگ (در یک برنامه اصولی البته!)ب) باز کردن یک اتصال به دیتابیسج) ایجاد اشیاء Command برای انجام عملیات مورد نظرد) اجرا و فراخوانی اشیاء مراحل قبله) بستن اتصال به دیتابیس و آزاد سازی اشیاءاگر در برنامههای یک تازه کار به هر محلی از برنامه او دقت کنید این 5 مرحله را میتوانید مشاهده کنید. ...
اگر شش یا هفت قسمت قبل را بخواهیم به صورت سریع مرور کنیم میتوان به ویدیوی زیر مراجعه کرد:Getting Started with NHibernate در طی یک ربع، خیلی سریع به دریافت فایلهای لازم، ایجاد یک پروژه جدید، افزودن ارجاعات لازم، استفاده از fluent NHibernate برای ساخت نگاشتها و سپس استفاده از LINQ to NHibernate برای کوئری گرفتن از اطلاعات دیتابیس اشاره کرده است (که از این لحاظ کاملا به روز است).