ورود

View Full Version : پروژه آماده NHibernate



مهدی عابدینی
شنبه 25 اردیبهشت 1389, 11:29 صبح
می خواستم از ابتدا کامل در مورد Nhibernate توضیح بدم اما گفتم یه پروژه آماده بذارم روش کار کنید اگه مشکل داشتید بگید با همکاری بچه ها حل کنیم.

yasemi
چهارشنبه 12 خرداد 1389, 17:55 عصر
خوب عزیز شما شروع کن به توضیح دان

مهدی عابدینی
سه شنبه 18 خرداد 1389, 09:37 صبح
PDF فصل اول را دانلود کنید
تایید و تشکرهای شما باعث اشتیاق بیشتر در ارائه این مطلب می شود

ricky22
سه شنبه 18 خرداد 1389, 13:30 عصر
سلام دوست عزیز می تونید یک مقایسه از این ORM با LINQ و یا CODESMITH بدید؟
از نظر راحتی و سرعت و بهینه بودن

majid325
چهارشنبه 19 خرداد 1389, 08:06 صبح
از نظر راحتی که شروع و نگهداری Linq نسبت به NHibernate بهتره
از نظر سرعت یه ابهاماتی در این سوال هست :
1-سرعت خواندن از منبع
2-سرعت خواندن از Cache
3-سرعت خواند در N بار
و همچنین برای Insert , Update و کمی هم Delete

فکر کنم منطقی تر این باشه که Entity FramWork 4 رو با NHibernate 2..1.2 مقایسه کنیم

پ ن :
فعلا Linq یک ORM هست یا نه رو راجع به هش صحبت نمیکنیم

مهدی عابدینی
چهارشنبه 19 خرداد 1389, 11:53 صبح
قبل شروع ادامه بحث شیرین ان هایبرنت دو تا تشکر دارم
اول از آقای رستمی و خانم محمد نژاد و آقای نصیری برای اینکه تو جمع آوری مطالب کمکم کردن
دوم از تمام کسانی که در این تاپیک شرکت می کنن و نظر میدن و در کامل شدن مطالب کمک می کنن

مهدی عابدینی
چهارشنبه 19 خرداد 1389, 12:33 عصر
در جواب ricky22 :
بايد دقت داشته باشيد كه LINQ به تنهايي فقط يك language feature است و نه يك data access technology . بنابراين بايد دقيقا linq to sql يا linq to entities را مشخص كرد.
سابقه نزديك به يك دهه پروژه اصلي Hibernate‌ كه توسط جاوا كارها توسعه داده شده، در اين فريم ورك لحاظ شده كه از هر لحاظ نسبت به LINQ to entities اون رو پخته‌تر كرده. ضمنا پروايدر LINQ هم براي NH اخيرا توسعه داده شده و از اين لحاظ كم و كسري ندارد.
linq to sql براي اس كيوال سرور توسعه داده شد. بعد مايكروسافت اومد اون رو با linq to entities تكميل كرد (البته linq to sql مطابق وبلاگ رسمي برنامه نويس‌هاي MS هنوز هم توسعه پيدا مي‌كنه و در دات 4 شاهد اون خواهيم بود) و توسط linq to entities امكان استفاده از ساير ديتابيس‌ها هم فراهم شده البته اگر پروايدر آن موجود باشد كه تعدادي از آن‌ها هم تجاري هستند. اما با NH اين مشكل رو نداريد چون تقريبا همه نوع ديتابيس معروفي را ساپورت مي‌كند و رايگان هم هست.
learning curve مربوط به NH بيشتر است از ساير orm ها.
NH از دات نت فريم 2 به بعد را پشتيباني مي‌كند اما linq to entities فقط از دات نت فريم ورك سه و نيم سرويس پك يك به بعد به صورت كامل در دسترس است.

مهدی عابدینی
چهارشنبه 19 خرداد 1389, 12:45 عصر
ان هایبر نت به دو شکل سنتی و Fluent NHibernate می باشد
در NHibernate سنتي كار ساخت نگاشت‌ها توسط يك سري فايل xml صورت مي‌گيرد كه ممكن است حين تهيه اوليه اشتباهات تايپي و غيره داشته باشد.اين نوع فايل‌ها تحت كنترل كامپايلر نبوده و در حين كار مشكلات آن‌ها مشخص مي‌شود.
در Fluent NHibernate كار تعريف نگاشت‌ها با استفاده از كدهاي strongly typed دات نتي صورت مي‌گيرد كه بلافاصله تحت كنترل كامپايلر هستند. همچنين مبحث Auto Mapping آن را مي‌توانيد در قسمت‌هاي بعد مطالعه كنيد. امكان unit test نوشتن براي نگاشت‌هاي اين روش بدون حتي درج يك ركورد در ديتابيس ميسر است . با توجه به اينكه در روش دوم تعريف نگاشت‌ها، بلافاصله تحت نظر كامپايلر است امكان refactoring ساده‌تر آن نيز مهيا است.


در اینجا ابتدا به شکل سنتی NHibernate می پردازیم سپس Fluent NHibernate را کامل توضیح می دهیم.

مهدی عابدینی
شنبه 22 خرداد 1389, 07:45 صبح
برای استفاده از NHibernate مراحل مختلفی را باید سپری کرد که در زیر به آنها اشاره می‌شود.

مرحله اول : ایجاد پایگاه داده

پایگاه داده هایی که ان هایبرنت پشتیبانی می کند به شرح زیر می باشد :

Microsoft SQL Server 2005/2000
Oracle
Microsoft Access
Firebird
PostgreSQL
DB2 UDB
MySQL
SQLite

گام دوم . دانلود و نصب ان.هایبرنیت .

گام سوم . اضافه کردن DLL های ان.هایبرنیت به پروژه.
پروژه‌ای ایجاد کنید و فایل های DLL Requirement.rar و DLL Requirement.rar11 را که در ضمیمه آورده شده را به پروژه اضافه کنید.

گام چهارم . تنظیمات مورد نیاز در Web.Config .
در ادامه تنظیمات زیر در فایل web.config برنامه اضافه می‌کنیم.


توضیحات موارد بالا در قسمت بعدی به شکل زبان اصلی آورده شده است

مهدی عابدینی
شنبه 22 خرداد 1389, 07:48 صبح
در فایل ضمیمه زیر web.config پایگاه داده هایی که ان هایبرنت پشتیبانی می کند را کامل با کد به زبان اصلی آورده ایم.

مهدی عابدینی
شنبه 22 خرداد 1389, 07:57 صبح
اگه دوست دارین بگین تا من ادامه بدم

naser2009
پنج شنبه 27 خرداد 1389, 17:59 عصر
اگه دوست دارین بگین تا من ادامه بدم
سلام آقای عابدینی لطف کنید ادامه بدید مبحث جالبیست.:لبخندساده:
وسط مسط کدا و مثلا تنظیمات web.config خودتون هم توضیح بدهید.

taghvajou
پنج شنبه 27 خرداد 1389, 18:36 عصر
مهندس عابدینی! دستتون درد نکنه! مطلب مفیدیه! لطفا همین طوری گام به گام ادامه بدین! خدا خیرتون بده

مهدی عابدینی
شنبه 29 خرداد 1389, 08:23 صبح
مواردی که به زبان اصلی در تاپیک قبل آورده شده بود توضیحاتی اضافی برای همه برنامه نویسانی بود که با پایگاه داده های متفاوت کار می کنند اما ما در اینجا فقط با پایگاه داده SQL کار می کنیم و به صورت کامل نیز تمام قسمت های آن را توضیح می دهیم.

مهدی عابدینی
شنبه 29 خرداد 1389, 10:08 صبح
در مورد اين كلاس:
با توجه به اينكه برنامه از نوع ويندوزي است، براي مديريت صحيح كانكشن استرينگ، فايل App.Config را به برنامه افروده و محتويات آن‌را به شكل زير تنظيم مي‌كنيم



<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler" />
<!--<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>-->
</configSections>

<nhibernate>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.show_sql" value="true" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
نوع پایگاه داده
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" />

<add key="hibernate.connection.connection_string" value="Data Source=.\SQLEXPRESS;AttachDbFilename=آدرس پایگاه داده;Integrated Security=True;Connect Timeout=30;User Instance=True" />
</nhibernate>


</configuration>

مهدی عابدینی
شنبه 29 خرداد 1389, 10:41 صبح
فصل دوم را دریافت کنید

naser2009
شنبه 29 خرداد 1389, 21:51 عصر
سلام آقای عابدینی لطف کنید حجم پست ها رو یه خورده کمتر کنید تا بهتر متوجه بشیم:بوس:
ممنون از زحمت های شما

naser2009
شنبه 29 خرداد 1389, 22:03 عصر
آقای عابدینی
4 تا مساله
1) اگه n-hibernate رو نصب کنیم واسه من یه project template اضافه می کنه (یعنی وقتی new project می زنم گزینه ای مثله n-hibernate project داریم - یا مثله ajax control toolkit که وقتی نصب باشه گزینه ajax enabled website هم اضافه شده)

2) از کجا دانلود کنیم n-hibernate رو اگه لینکشو دارین بذارین لطفا

3) متعلق به شرکت خاصی نیست ؟

4)آیا مطمئن اید که sql server 2008 رو support نمیکنه(چون الان ساله 2010هه فکر نکنم زیاد جالب باشه 5 سال عقب باشیم:چشمک:)

مهدی عابدینی
یک شنبه 30 خرداد 1389, 09:28 صبح
من فایل های که باید دانلود کنید و به پروژه اضافه کنید را در تاپیک قبل گذاشته ام و نیازی نیست به سایت خاصی برید
NHibernate نصب کردنی نیست فقط باید فایل های DLL آن را به References اضافه کنید. بعد در مراحل بعد در پروژه از آن استفاده می کنیم.
در مورد NHibernate در تاپیک های ابتدایی توضیح کامل داده شده است
در مورد sql server 2008 کامل نمیدونم که پشتیبانی می کنه یا نه و احتمال می دم پشتیبانی می کنه اما فکر میکنم اگه بخوای خیلی حرفه ای کار کنی و به روز باشی می تونی از Oracle استفاده کنی

مهدی عابدینی
یک شنبه 30 خرداد 1389, 09:37 صبح
چون اطلاعات خیلی زیاده و مربوط بهم و فصلی گفته میشه حجم تایپک ها افزایش پیدا میکنه اگه همه مایل هستید هر فصل را بصورت Pdf براتون بذارم تا از شلوغی و حجم زیاد پست ها جلو گیری بشه ؟؟؟؟؟؟؟؟؟؟؟؟

Mostafa_Dindar
یک شنبه 30 خرداد 1389, 12:48 عصر
چون اطلاعات خیلی زیاده و مربوط بهم و فصلی گفته میشه حجم تایپک ها افزایش پیدا میکنه اگه همه مایل هستید هر فصل را بصورت Pdf براتون بذارم تا از شلوغی و حجم زیاد پست ها جلو گیری بشه ؟؟؟؟؟؟؟؟؟؟؟؟

سلام ,

نیکی و پرسش ؟ این کارتون قابل تقدیره . با این کار , یک منبع خوب فارسی برای کار nHibernate ایجاد میشه , ضمن اینکه حق CopyRight نویسنده اون هم محفوظ میمونه .

مهدی عابدینی
دوشنبه 31 خرداد 1389, 15:54 عصر
فصل ها را مرتب در این تاپیک گذاشتم لطفا مشاهده کنید اما سوالات و نظراتتون را اینجا بدین ممنون میشم
http://www.barnamenevis.org/forum/showthread.php?t=229095

مهدی عابدینی
یک شنبه 06 تیر 1389, 12:31 عصر
تشکر های شما باعث دل گرمی و کامل شدن مطلب می گردد.
از تمام دوستانی که مرا همراهی کردن ممنونم

saeedmain
جمعه 18 تیر 1389, 00:52 صبح
از شما بابت مطالب وپروژه ی آماده تون متشکرم.:تشویق:
اما 2تا سوال داشتم:
1- هنگام اجرای پروژه مشکلی نداشتم ،ولی موقع افزودن یک بیمار وکلیک بر دکمه ی ثبت،خطا مید هد وپنجره پیغام خطایی را که تعریف کردیدکه هنگام رخداد exception نمایش داده شود را نشان میده با پیغام زیر:
Object reference not set to an instance of an object
هم چنین موقعی که بر روی دکمه ی جستجو کلیک میکنم هم بر روی خط زیر exception میده و دیگه اجرا هم نمیشه
return sessionFactory.OpenSession();
در واقع نمیتونه session رو باز کنه!
اگه راهنماییم کنید که چه کنم خیلی ممنون میشم.آیا تنظیم خاصی نیازه؟:گیج:
2- سوال بعدی اینکه شما یه بار گفتید نیاز به نصب چیز خاصی نیست وفقط باید کتابخانه ها رو اضافه کرد ولی توی مقاله صراحتا ذکر کردید که یکی ازمراحل استفاده از این تکنولوژی نصب nhibernateهست که میتونید از اینترنت دانلودکنیدونصب کنید.خواهش می کنم راهنمایی کنید که آیا باید چیزی نصب کنیم یانه؟
باز هم خیلی خیلی ممنونم وخواستار ادامه ی آموزشتون هستم...

مهدی عابدینی
سه شنبه 22 تیر 1389, 07:37 صبح
ببخشید من چند روز نبودم
در مورد سوال دومتون :
ان هایبرنت نیازی به نصب نداره و منظورم در مقاله همان اضافه کردن به کتابخانه است.

مهدی عابدینی
سه شنبه 22 تیر 1389, 08:12 صبح
کار با ان هایبرنت یه کوچولو سخته اما بعد از اینکه یاد گرفتی معمار خوبی میشه

اولین چیزی که ممکن است برنامه را با خطا روبرو کند تنظیمات قسمت App.confing یا همون web.config می باشد
به قسمت زیر در این فایل دقت کن ببین همه چیز را درست تنظیم کردی
[code]
<nhibernate>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.show_sql" value="true" />
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
<add key="hibernate.connection.connection_string" value="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Project\Ho spital\Hospital V1.2\Hospital\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" />
</nhibernate>
[code/]

saeedmain
سه شنبه 22 تیر 1389, 18:24 عصر
آقای عابدینی سلام وتشکر مجدد
app.configمشکلی نداشت،البته مسیر دیتابیس رو در AttachDbFilenameباتوجه به مسیر دیتا بیس در کامپیوتر خودم تغییر دادم.
اما دقیقا هر دو مشکلی که گفتم هنوز وجود داره.

از راهنماییتون ممنون میشم.

مهدی عابدینی
چهارشنبه 23 تیر 1389, 08:16 صبح
در صورتی که شما برنامه که من گذاشتم را عینا اجرا کردید و با خطا روبرو شدید
این خطا چیزی جز اتصال به پایگاه داده نیست
ممکن است از SQL 2005 شما باشد
اگه کامل پایگاه داده و app.config را چک کردید و باز برنامه درست اجرا نشد ایملتون را بدید مثال های دیگری را براتون بفرستم

saeedmain
چهارشنبه 23 تیر 1389, 23:59 عصر
از اینکه به بنده کمک میکنید صمیمانه متشکرم.
ایمیل من
nategh1365@yahoo.com
باز هم از شما متشکرم.:تشویق:

مهدی عابدینی
شنبه 26 تیر 1389, 08:04 صبح
ارسال شد
براتون مرجع زبان اصلی ان هایبرنت را میفرستم.

saeedmain
یک شنبه 27 تیر 1389, 16:06 عصر
آقای عابدینی
سلام
از شما بابت مطالب وپروژه ی آماده تون ممنونم.:تشویق:
برنامه ی جدید شما را اجرا کردم .صفحه ی اصلی نمایش داده می شود.ولی دوباره وقتی بر دکمه ی جستجو کلیک می کنم در خط زیر خطای NonReferenceExceptionصادر می کند ودیگر اجرا نمی شود.
ICriteria cri = session.CreateCriteria(typeof(Patient));
البته مسیر دیتابیس رو در AttachDbFilenameدر app.config طبق مسیر دیتا بیس در کامپیوتر خودم تغییر دادم.باز درست نشد.:عصبانی++:
آیا قبل از اجرای برنامه باید تغییراتی اعمال کنم،آیا باید چیزی را اضافه کنم،یا شما reference ها رابطور پیش فرض اضافه کرده اید.
محیط من sql server 2005 ,visual studio 2008 است ،آیا مشکل از اینهاست.
اگه زحمتی نیست راهنماییم کنید.:خجالت:
تشکر

hoda.nik
دوشنبه 08 آذر 1389, 16:22 عصر
با سلام و تشکر .من دستورات delete , insert , update در ان هایبر نت در صفحات وب را نیاز دارم .ممنون.

RezaMazhari
دوشنبه 15 فروردین 1390, 10:47 صبح
با سلام
مطالب مربوط به فصل 1و2و3 nhibernate را نتوانستم دانلود كنم .
فايل هاي rar به صورت attachment.php ذخيره و توسط IE باز نميشوند .
ممنون ميشم اگه راهنمايي كنين .

HAMRAHSOFT.IR
شنبه 21 خرداد 1390, 14:07 عصر
[QUOTE=مهدی عابدینی;980478]می خواستم از ابتدا کامل در مورد Nhibernate توضیح بدم اما گفتم یه پروژه آماده بذارم روش کار کنید اگه مشکل داشتید بگید با همکاری بچه ها حل کنیم.[/QUOTE

سلام
دوست خوب امكان داره يك نمونه با بانك اكسس قرار بديد؟

iranian_genius
دوشنبه 07 شهریور 1390, 23:40 عصر
لطفا دوستانی که در مورد Nhibernate اطلاعات مفید و مقاله و پروژه دارند برای استفاده دیگران قرار بدهند

واقعا حیفه ایین آموزشها ول بشه....

mehdi_payervand
شنبه 08 بهمن 1390, 15:48 عصر
سلام، من نمونه آموزشهای زیادی رو دیدم و کتاب NHibernate 3 Beginners Guide انتشارات Packt که نسخه 3 انهایبرنت رو آموزش داده رو هم خوندم ولی دست آخر دیدم غیر از مطالب فصل آخر که نویسنده کتاب در مورد خطاهای متداول گفته برای آموزش مطمئنا نوشته های آموزشی رو از وبلاگ مهندس نصیری بصورت پی دی اف که تهیه کردم میتونه کمک خوبی به همه بکنه امیدوارم مفید فایده باشه:
مقالات آموزشی NHibernate وبلاگ مهندس وحید نصیری (http://www.mediafire.com/?4a3ajd1t787ha6n)

HAMRAHSOFT.IR
دوشنبه 12 بهمن 1394, 08:39 صبح
دوستان کسی هست که کار کرده باشه ویا منبع خوب فارسی سراغ داشته باشه؟