Fluent NHibernate چیست؟

Fluent NHibernate Logo
Fluent NHibernate نیز مانند NHibernate یک برنامۀ open source است که برای map کردن کلاس ها به جداول database مورد استفاده قرار میگیرد.
FluentNHibernate پیشنهاد میکندکه بجای نوشتن کد xml تحت عنوان (.hbm.xml files) از کدC# استفاده کنید.این باعث میشود کدنویسی سادهتر شده و قابلیت خواندن کدها بهبود یابد و البته کد کوتاهتر شود.
همانطور که میدانید در استفاده از NHibernate به عنوان یک OR Mapper برای مپ کردن کلاسها به جداول از فایلهای xml استفاده میشود.اما Fluent NHibernate چیز دیگری را پیشنهاد میکند.اما چرا؟
فایل xml خوب است اما چند مورد نامطلوب در مورد آن وجود دارد:
- به علت اینکه xml بوسیلهٔ کامپایلر ارزیابی نمیشود،شما میتوانید در کلاسهایتان نام property ها را تغییر دهید ولی آنها در فایلهای mapping ، update نمیشوند. و شما این تغییر را تا زمان اجرا متوجه نمیشوید.
- فایل xml زیادی طولانی است.گرچه NHibernate به تدریج از element های اجباریxml کاسته اما شما هنوز از این درازنویسی رها نشدهاید.
- Mapping های تکراری-فایلهای hbm در NHibernate میتوانند کاملاً طولانی شوند اگر شما برای هر یک قوانینی تعین کنید.مثل اینکه بخواهید همهٔ string ها not-null باشند.
حالا Fluent NHibernate چگونه با این مسائل برخورد میکند:
میتوانید mapping هاتان را به سمت کد واقعی حرکت دهید پس آنها در تمام application کامپایل میشوند و اگر تغییراتی را اعمال کنید کامپایلر در لحظه اخطار میدهد و یا با refactory تغییرات را اعمال میکند. و برای بازنویسی قوانین نحوهای را پیشنهاد میکند که یک بار این قوانین نوشته شوند.
به نمونه کد زیر توجه کنید.
public class CatMap : ClassMap
{
public CatMap()
{
Id(x => x.Id);
Map(x => x.Name).WithLengthOf(16).Not.Nullable();
Map(x => x.Sex);
References(x => x.Mate);
HasMany(x => x.Kittens);
}
}
Fluent NHibernate را میتوانید از سایت رسمیاش به این آدرس
و یا از سرورهای گوگل کد در این آدرس دریافت نمایید.