می خواستم از ابتدا کامل در مورد Nhibernate توضیح بدم اما گفتم یه پروژه آماده بذارم روش کار کنید اگه مشکل داشتید بگید با همکاری بچه ها حل کنیم.
می خواستم از ابتدا کامل در مورد Nhibernate توضیح بدم اما گفتم یه پروژه آماده بذارم روش کار کنید اگه مشکل داشتید بگید با همکاری بچه ها حل کنیم.
خوب عزیز شما شروع کن به توضیح دان
PDF فصل اول را دانلود کنید
تایید و تشکرهای شما باعث اشتیاق بیشتر در ارائه این مطلب می شود
آخرین ویرایش به وسیله مهدی عابدینی : دوشنبه 31 خرداد 1389 در 09:50 صبح دلیل: قراردادن PDF
سلام دوست عزیز می تونید یک مقایسه از این ORM با LINQ و یا CODESMITH بدید؟
از نظر راحتی و سرعت و بهینه بودن
از نظر راحتی که شروع و نگهداری Linq نسبت به NHibernate بهتره
از نظر سرعت یه ابهاماتی در این سوال هست :
1-سرعت خواندن از منبع
2-سرعت خواندن از Cache
3-سرعت خواند در N بار
و همچنین برای Insert , Update و کمی هم Delete
فکر کنم منطقی تر این باشه که Entity FramWork 4 رو با NHibernate 2..1.2 مقایسه کنیم
پ ن :
فعلا Linq یک ORM هست یا نه رو راجع به هش صحبت نمیکنیم
قبل شروع ادامه بحث شیرین ان هایبرنت دو تا تشکر دارم
اول از آقای رستمی و خانم محمد نژاد و آقای نصیری برای اینکه تو جمع آوری مطالب کمکم کردن
دوم از تمام کسانی که در این تاپیک شرکت می کنن و نظر میدن و در کامل شدن مطالب کمک می کنن
آخرین ویرایش به وسیله مهدی عابدینی : چهارشنبه 19 خرداد 1389 در 12:46 عصر
در جواب 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 فقط از دات نت فريم ورك سه و نيم سرويس پك يك به بعد به صورت كامل در دسترس است.
ان هایبر نت به دو شکل سنتی و Fluent NHibernate می باشد
در NHibernate سنتي كار ساخت نگاشتها توسط يك سري فايل xml صورت ميگيرد كه ممكن است حين تهيه اوليه اشتباهات تايپي و غيره داشته باشد.اين نوع فايلها تحت كنترل كامپايلر نبوده و در حين كار مشكلات آنها مشخص ميشود.
در Fluent NHibernate كار تعريف نگاشتها با استفاده از كدهاي strongly typed دات نتي صورت ميگيرد كه بلافاصله تحت كنترل كامپايلر هستند. همچنين مبحث Auto Mapping آن را ميتوانيد در قسمتهاي بعد مطالعه كنيد. امكان unit test نوشتن براي نگاشتهاي اين روش بدون حتي درج يك ركورد در ديتابيس ميسر است . با توجه به اينكه در روش دوم تعريف نگاشتها، بلافاصله تحت نظر كامپايلر است امكان refactoring سادهتر آن نيز مهيا است.
در اینجا ابتدا به شکل سنتی NHibernate می پردازیم سپس Fluent NHibernate را کامل توضیح می دهیم.
برای استفاده از 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 برنامه اضافه میکنیم.
توضیحات موارد بالا در قسمت بعدی به شکل زبان اصلی آورده شده است
آخرین ویرایش به وسیله مهدی عابدینی : شنبه 29 خرداد 1389 در 08:46 صبح دلیل: افزودن فایل
در فایل ضمیمه زیر web.config پایگاه داده هایی که ان هایبرنت پشتیبانی می کند را کامل با کد به زبان اصلی آورده ایم.
آخرین ویرایش به وسیله مهدی عابدینی : شنبه 29 خرداد 1389 در 08:53 صبح دلیل: مرتب سازی
اگه دوست دارین بگین تا من ادامه بدم
آخرین ویرایش به وسیله مهدی عابدینی : شنبه 22 خرداد 1389 در 09:00 صبح
مهندس عابدینی! دستتون درد نکنه! مطلب مفیدیه! لطفا همین طوری گام به گام ادامه بدین! خدا خیرتون بده
مواردی که به زبان اصلی در تاپیک قبل آورده شده بود توضیحاتی اضافی برای همه برنامه نویسانی بود که با پایگاه داده های متفاوت کار می کنند اما ما در اینجا فقط با پایگاه داده SQL کار می کنیم و به صورت کامل نیز تمام قسمت های آن را توضیح می دهیم.
در مورد اين كلاس:
با توجه به اينكه برنامه از نوع ويندوزي است، براي مديريت صحيح كانكشن استرينگ، فايل App.Config را به برنامه افروده و محتويات آنرا به شكل زير تنظيم ميكنيم
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler " />
<!--<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHa ndler"/>-->
</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.DriverConnectionProvi der" />
نوع پایگاه داده
<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>
فصل دوم را دریافت کنید
آخرین ویرایش به وسیله مهدی عابدینی : دوشنبه 31 خرداد 1389 در 12:09 عصر
سلام آقای عابدینی لطف کنید حجم پست ها رو یه خورده کمتر کنید تا بهتر متوجه بشیم
ممنون از زحمت های شما
آقای عابدینی
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 سال عقب باشیم)
من فایل های که باید دانلود کنید و به پروژه اضافه کنید را در تاپیک قبل گذاشته ام و نیازی نیست به سایت خاصی برید
NHibernate نصب کردنی نیست فقط باید فایل های DLL آن را به References اضافه کنید. بعد در مراحل بعد در پروژه از آن استفاده می کنیم.
در مورد NHibernate در تاپیک های ابتدایی توضیح کامل داده شده است
در مورد sql server 2008 کامل نمیدونم که پشتیبانی می کنه یا نه و احتمال می دم پشتیبانی می کنه اما فکر میکنم اگه بخوای خیلی حرفه ای کار کنی و به روز باشی می تونی از Oracle استفاده کنی
چون اطلاعات خیلی زیاده و مربوط بهم و فصلی گفته میشه حجم تایپک ها افزایش پیدا میکنه اگه همه مایل هستید هر فصل را بصورت Pdf براتون بذارم تا از شلوغی و حجم زیاد پست ها جلو گیری بشه ؟؟؟؟؟؟؟؟؟؟؟؟
فصل ها را مرتب در این تاپیک گذاشتم لطفا مشاهده کنید اما سوالات و نظراتتون را اینجا بدین ممنون میشم
http://www.barnamenevis.org/sh...d.php?t=229095
تشکر های شما باعث دل گرمی و کامل شدن مطلب می گردد.
از تمام دوستانی که مرا همراهی کردن ممنونم
از شما بابت مطالب وپروژه ی آماده تون متشکرم.
اما 2تا سوال داشتم:
1- هنگام اجرای پروژه مشکلی نداشتم ،ولی موقع افزودن یک بیمار وکلیک بر دکمه ی ثبت،خطا مید هد وپنجره پیغام خطایی را که تعریف کردیدکه هنگام رخداد exception نمایش داده شود را نشان میده با پیغام زیر:
Object reference not set to an instance of an object
هم چنین موقعی که بر روی دکمه ی جستجو کلیک میکنم هم بر روی خط زیر exception میده و دیگه اجرا هم نمیشه
return sessionFactory.OpenSession();
در واقع نمیتونه session رو باز کنه!
اگه راهنماییم کنید که چه کنم خیلی ممنون میشم.آیا تنظیم خاصی نیازه؟
2- سوال بعدی اینکه شما یه بار گفتید نیاز به نصب چیز خاصی نیست وفقط باید کتابخانه ها رو اضافه کرد ولی توی مقاله صراحتا ذکر کردید که یکی ازمراحل استفاده از این تکنولوژی نصب nhibernateهست که میتونید از اینترنت دانلودکنیدونصب کنید.خواهش می کنم راهنمایی کنید که آیا باید چیزی نصب کنیم یانه؟
باز هم خیلی خیلی ممنونم وخواستار ادامه ی آموزشتون هستم...
ببخشید من چند روز نبودم
در مورد سوال دومتون :
ان هایبرنت نیازی به نصب نداره و منظورم در مقاله همان اضافه کردن به کتابخانه است.
کار با ان هایبرنت یه کوچولو سخته اما بعد از اینکه یاد گرفتی معمار خوبی میشه
اولین چیزی که ممکن است برنامه را با خطا روبرو کند تنظیمات قسمت 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.DriverConnectionProvi der" />
<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/]
آقای عابدینی سلام وتشکر مجدد
app.configمشکلی نداشت،البته مسیر دیتابیس رو در AttachDbFilenameباتوجه به مسیر دیتا بیس در کامپیوتر خودم تغییر دادم.
اما دقیقا هر دو مشکلی که گفتم هنوز وجود داره.
از راهنماییتون ممنون میشم.
در صورتی که شما برنامه که من گذاشتم را عینا اجرا کردید و با خطا روبرو شدید
این خطا چیزی جز اتصال به پایگاه داده نیست
ممکن است از SQL 2005 شما باشد
اگه کامل پایگاه داده و app.config را چک کردید و باز برنامه درست اجرا نشد ایملتون را بدید مثال های دیگری را براتون بفرستم
از اینکه به بنده کمک میکنید صمیمانه متشکرم.
ایمیل من
nategh1365@yahoo.com
باز هم از شما متشکرم.
ارسال شد
براتون مرجع زبان اصلی ان هایبرنت را میفرستم.
آقای عابدینی
سلام
از شما بابت مطالب وپروژه ی آماده تون ممنونم.
برنامه ی جدید شما را اجرا کردم .صفحه ی اصلی نمایش داده می شود.ولی دوباره وقتی بر دکمه ی جستجو کلیک می کنم در خط زیر خطای NonReferenceExceptionصادر می کند ودیگر اجرا نمی شود.
ICriteria cri = session.CreateCriteria(typeof(Patient));
البته مسیر دیتابیس رو در AttachDbFilenameدر app.config طبق مسیر دیتا بیس در کامپیوتر خودم تغییر دادم.باز درست نشد.
آیا قبل از اجرای برنامه باید تغییراتی اعمال کنم،آیا باید چیزی را اضافه کنم،یا شما reference ها رابطور پیش فرض اضافه کرده اید.
محیط من sql server 2005 ,visual studio 2008 است ،آیا مشکل از اینهاست.
اگه زحمتی نیست راهنماییم کنید.
تشکر
با سلام و تشکر .من دستورات delete , insert , update در ان هایبر نت در صفحات وب را نیاز دارم .ممنون.
با سلام
مطالب مربوط به فصل 1و2و3 nhibernate را نتوانستم دانلود كنم .
فايل هاي rar به صورت attachment.php ذخيره و توسط IE باز نميشوند .
ممنون ميشم اگه راهنمايي كنين .
[QUOTE=مهدی عابدینی;980478]می خواستم از ابتدا کامل در مورد Nhibernate توضیح بدم اما گفتم یه پروژه آماده بذارم روش کار کنید اگه مشکل داشتید بگید با همکاری بچه ها حل کنیم.[/QUOTE
سلام
دوست خوب امكان داره يك نمونه با بانك اكسس قرار بديد؟
لطفا دوستانی که در مورد Nhibernate اطلاعات مفید و مقاله و پروژه دارند برای استفاده دیگران قرار بدهند
واقعا حیفه ایین آموزشها ول بشه....
سلام، من نمونه آموزشهای زیادی رو دیدم و کتاب NHibernate 3 Beginners Guide انتشارات Packt که نسخه 3 انهایبرنت رو آموزش داده رو هم خوندم ولی دست آخر دیدم غیر از مطالب فصل آخر که نویسنده کتاب در مورد خطاهای متداول گفته برای آموزش مطمئنا نوشته های آموزشی رو از وبلاگ مهندس نصیری بصورت پی دی اف که تهیه کردم میتونه کمک خوبی به همه بکنه امیدوارم مفید فایده باشه:
مقالات آموزشی NHibernate وبلاگ مهندس وحید نصیری
آخرین ویرایش به وسیله mehdi_payervand : شنبه 08 بهمن 1390 در 16:03 عصر
دوستان کسی هست که کار کرده باشه ویا منبع خوب فارسی سراغ داشته باشه؟