طی مدت اخیر که به دنبال راهی برای dynamic کردن entityهای NHibernate بودم خود به خود مجبور شدم مروری به همه راهحلهای mapping از جمله Fluent NHibernate داشته باشم.
طی این مرور بودم که فهمیدم FNH آنقدر هم که فکر میکردم بد نیست، اولاً به خاطر این که Auto Mapping دارد. دوم به خاطر این که Fluent mapping آن سادگی و خوانایی نسبتاً قابل قبولی نسبت به HBM دارد.
FNH سه راه برای mapping دارد: Auto Mapping، Fluent Mapping و Traditional Mapping. Auto mapping کار mapping را در صورتی که نیازمندیهایتان با پیشفرضهای FNH خیلی تفاوت نداشته شد به خوبی راه میاندازد. در این روش شما فقط یک class ساده سیشارپی را به FNH معرفی میکنید بدون آن که از attribute یا lambda expression برای بیان تناظر بین کلاس و جدول استفاده کرده باشید. FNH خودش یک mapping پیش فرض در نظر خواهد گرفت. برای فهم سادگی موضوع حتماً نگاهی به نمونههای اینجا بیندازید.
دیدگاهها
آقا سلام و خسته نباشید
یک مورد اینکه خیلی ها هنوز معتقدند استفاده از Fluent برای کاربران عادی و سطح پایین خوبه و اینکه در پروژه های بزرگ کمی دست و پاگیر میشه. میشه بگی منظور از این دست و پاگیری چیه و چه تناقضی با این سادگی که شما میفرمایید داره؟
سلام دکتر، من ی مدتی از Castle ActiveRecord استفاده میکردم، چون اون هم مشابه FNH سادگی استفاده داشت. اما به نسبت همان سادگی که داشت، برنامهنویس را از دسترسی مستقیم به NHibernate دور میکرد و ایضا کمی انعطافپذیری رو کم میکرد.
من خودم تجربه زیادی روی FNH ندارم. اما حدس میزنم اون هم ی جورایی مشابه Castle ActiveRecord باشه. اما کمتر. چون Castle ActiveRecord راجع به تمام شئون NHibernate بود ولی FNH فقط راجع به mapping است. احتمالاً منظور اون دوستان هم کاهش انعطافپذیری در mapping باشه که من راجع به اون خیلی مطمئن نیستم.
ممنون