PDA

View Full Version : جدیدترین و بهترین تکنولوژی برای کار با دیتابیس چیه لطفا راهنماییم کنید؟



samadblaj
پنج شنبه 12 مرداد 1391, 13:39 عصر
سلام دوستان خسته نباشید.
یه مدت بود داشتم روی تکنولوژی Linq to sql کار میکردم ولی خیلی به گوش میرسه این تکنولوژی منسوخ ، شده.
الان چند تا سوال برام پیش اومده لطفا رهنماییم کنید.

1 - بهترین تکنولوژی برای کار با دیتابیس چیه؟
2 - مثلا اگه کار با entity framework رو یاد بگیرم نیاز هست ado رو هم یاد بگیرم؟

ممنون میشم راهنماییم کنید

nilmil_nil
پنج شنبه 12 مرداد 1391, 17:05 عصر
دوست عزیز تا اونجایی که من فهمیدم از این تکنولوژی ها
اینه که مایکروسافت اومده کار برنامه نویسا رو راحت کرده و باعث شده که کمتر کد بنویسن
به نظر من کد نویسی این مراحل باید انجام بشه برای کسانی که تازه شروع به کار کردن لازمه
البته ناگفته نماند خوب چون این تکنولوژی ها توسط خود ملیکروسافت ارائه شدن مسلما بهینه هستند
و با عث می شه که کمتر درگیر ارتباط با دیتابیس باشید و به اصول دیگر برنامه توجه بیشتر کنید
و لی در کل من همون کدنویسی این ارتباطات رو بیشتر دوست دارم .... خوب هرکسی یه نظری داره:خجالت:

Arash_janusV3
پنج شنبه 12 مرداد 1391, 17:10 عصر
من خودم استفاده از dll ی تمام دستورات ado را داره پیشنهاد می کنم
SQL HELPER از نظر من فوق العادست
در این سایت هم فایل دانلودش هست هم مباحثی در این خصوص داره
سرچ کنید سورس هم داره

samadblaj
پنج شنبه 12 مرداد 1391, 18:44 عصر
دوست عزیز تا اونجایی که من فهمیدم از این تکنولوژی ها
اینه که مایکروسافت اومده کار برنامه نویسا رو راحت کرده و باعث شده که کمتر کد بنویسن
به نظر من کد نویسی این مراحل باید انجام بشه برای کسانی که تازه شروع به کار کردن لازمه
البته ناگفته نماند خوب چون این تکنولوژی ها توسط خود ملیکروسافت ارائه شدن مسلما بهینه هستند
و با عث می شه که کمتر درگیر ارتباط با دیتابیس باشید و به اصول دیگر برنامه توجه بیشتر کنید
و لی در کل من همون کدنویسی این ارتباطات رو بیشتر دوست دارم .... خوب هرکسی یه نظری داره

ممنونم از پاسخ با ارزشتون ، منم مشکلم همینه تکنولوژی ado از ابتدا تا الان کاملا پا برجا بوده ولی الان هم فقط به خاطر بهینه کردن این ابزار linq to sql و Linq to entity خوب مشکل من اینجاست کدوم بهینه تره از کدوم استفاده کنم؟ و همینطور کدوم جدیدتره؟

با ado رابطه خوبی ندارم تقریبا به Linq to sql هم مسلط شدم اما همه میگن Linq to entity مناسبتره؟ نظر شما دوستان چیه؟


آرش جان از شما هم ممنونم به خاطر وقتتون.



من خودم استفاده از dll ی تمام دستورات ado را داره پیشنهاد می کنم

متوجه این جملتون نمیشم؟



SQL HELPER از نظر من فوق العادست

این ابزاری که معرفی کردید چیه کاربردش چیه از کجا میشه گیرش آورد؟

uniqueboy_ara
پنج شنبه 12 مرداد 1391, 19:01 عصر
اگه بخوایم منطقی به این قضیه نگاه کنیم، به قول دوستمون همیشه تکنولوژی های جدید، واسه راحتی کار برنامه نویس ها ارائه میشن
من خودم شدیدا طرفدار ADO.net بودم، یه DLL هم نوشته بودم که همه کارهای مورد نظرم رو انجام میداد! ولی وقتی روش کار با EF رو دیدم، فهمیدم که کلا داشتم وقتم رو بیهوده تلف می کردم!
از نظر من EF فوق العاده س

Yanehsar
پنج شنبه 12 مرداد 1391, 19:14 عصر
سلام منظور از EF چيه؟!ميشه بيشتر توضيح بدهيد

gwbasic
پنج شنبه 12 مرداد 1391, 19:58 عصر
چند نکته رو مطرح می کنم شاید موضوع روشن بشه:

اول اینکه برای کار با دیتابیس از ADO.NET در هر صورت استفاده می شه یعنی نیاز به connection و command هست چون Database‌ اینها رو می فهمه حالا Linq to sql و Entity Framework و NHibernate و ... یک لایه روی ADO‌.NET ایجاد می کنند و مدیریت connection و command‌رو خودشون کنترل می کنند. بطور مثال وقتی ما با استفاده از EF می نویسیم objectContext.Customers.First() این کد رو پروایدر EF‌ تفسیر می کنه و Command‌اون رو می سازه (select Top(1) from Customer ) و Connection رو Open‌می کنه Command رو اجرا می کنه و رکورد برگشتی رو Materialize‌می کنه و یک Customer‌ می سازه و تحویل می ده. بنابراین ADO.NET‌ در لایه زیرین به قوت خودش باقی هست و فقط نیازی نیست که ما اون رو مدیریت کنیم دیگه نیازی نیست دستورات SQL‌رو بلد باشیم و کافیه LINQ بدونیم. پس این تا اینجا

دوم اینکه دو نگرش وجود داره object oriented‌ و relational که دومی برای دیتابیس استفاده می شه زمانی مایکروسافت برای ارتباط با Database‌ اشیایی مثل DataSet‌و DataTable‌رو تعریف کرد که برای ارتباط خوب بودند ولی شی گرا نبودند بطور مثال ما نمی تونستیم با DataTable‌وراثت رو تعریف کنیم و همیشه این نقص وجود داشت.
داخل پرانتز بگم که DataSet‌ رو از اشیاء کار با Database مثل Connection و Command‌ یکجا قرار ندید ما می تونستیم بدون Dataset‌ هم کار کنید با استفاده از DataReader
در نگرش جدید (یعنی به صورت شی گرا با دیتابیس کار کنیم) دیگه DataSet‌ و DataTable استفاده نمی شه ولی باز هم می گم Connection , Command‌ همیشه هستند. البته این نگرش سالها ست که پیاده سازی شده مثلا در NHibernate و همچنین چند سال بعد توسط EF در مایکروسافت اتفاق افتاده بنابراین چیز جدیدی نیست نمی دونم چرا بعضی دوستان نگران هستند.
به این ابزار ها (NHibernate , EF) می گن ORM که کار تبدیل جداول رو به کلاس های ما انجام می دن. حالا چه کمکی به ما می کنن؟
بطور ساده

Person person = new Person("Mohsen" , "Jamshidi);
objectContext.Person.Add(person);
objectContext.SaveChanges();


با استفاده از کد بالا یک person تعریف کردیم و بدون اینکه بدونیم اشیاء دیتابیس چیه و دستورات SQL‌چیه اونو در دیتابیس ذخیره کردیم.
برای آشنایی بیشتر می تونید پروژه ثبت سفارشات منو ببینید که چطور بدون استفاده از دستورات SQL‌ با استفاده از EF‌ انجام شده

نکته دیگه ای لازم می دونم بگم فرق بین LINQ و LINQ to SQL یا LINQ TO EF‌هست هرگز LINQ‌رو با دو مورد آخری اشتباه نگیرید LINQ‌یک تکنولوِژی مستقل هست که برای کار با لیستی از اشیاء هست هر لیستی که IEnumerable‌رو پیاده سازی کرده باشه. اما دو مورد بعدی پروایدر هایی هستند که دستورات LINQ‌رو به دستورات SQL ترجمه می کنند

و در نهایت بارها گفته شده که LINQ TO SQL و EF پروژه مستقل و موازی بودن که اولی محدود به کار با SQL SERVER‌می شد اما EF محدود به دیتابیس خاصی نیست و اینکه LINQ TO SQL دیگه توسط مایکروسافت گسترش داده نمی شه و متوقف شده و این EF‌هست که دائما در حال گسترش هست و همین چند روز پیش هم بطور کامل open source شد. بنابراین از EF‌استفاده کنید و سوئیچ کردن بین این دو نیز اصلا کار سختی نیست

موفق باشید

samadblaj
پنج شنبه 12 مرداد 1391, 21:44 عصر
آقای gwbasic خیلی خیلی خوب توضیح دادید باور نمیکنید دو تا از ابهاماتی که خیلی اذیتم میکرد رو جواب دادید


نکته دیگه ای لازم می دونم بگم فرق بین LINQ و LINQ to SQL یا LINQ TO EF‌هست هرگز LINQ‌رو با دو مورد آخری اشتباه نگیرید LINQ‌یک تکنولوِژی مستقل هست که برای کار با لیستی از اشیاء هست هر لیستی که IEnumerable‌رو پیاده سازی کرده باشه. اما دو مورد بعدی پروایدر هایی هستند که دستورات LINQ‌رو به دستورات SQL ترجمه می کنند



و در نهایت بارها گفته شده که LINQ TO SQL و EF پروژه مستقل و موازی بودن که اولی محدود به کار با SQL SERVER‌می شد اما EF محدود به دیتابیس خاصی نیست و اینکه LINQ TO SQL دیگه توسط مایکروسافت گسترش داده نمی شه و متوقف شده و این EF‌هست که دائما در حال گسترش هست و همین چند روز پیش هم بطور کامل open source شد. بنابراین از EF‌استفاده کنید و سوئیچ کردن بین این دو نیز اصلا کار سختی نیست

از شما هم ممنونم آقای uniqueboy_ara خوب منم میرم سراغ EF و از پایه ای تکنولوژی رو شروع میکنم همونطور که محسن جان گفت اختلاف زیادی هم بین کد ها نیست.

توی روال کار با دیتابیس اصلا مسیر مشخصی نداشتم و سر در گم بودم یه سری مطالب رو هم مطالعه کردم ولی هضم این تکنولوژی ها ساده تر که نشد دشوار تر هم شد.

موفق باشید

Arash_janusV3
جمعه 13 مرداد 1391, 00:19 صبح
Sql Helper یک dllی هست که تمام کتابخانه های مربوط به sql را پوشش داده
و مزیت های آن نظم بخشیدن به کدنویسی و انعطاف پذیری آن می باشد
و همچنین می توانید سورس آن را دانلود کنید و به دلخواه تغییراتی اعمال کنید

uniqueboy_ara
جمعه 13 مرداد 1391, 00:20 صبح
اگه زبانت خوبه، این کتاب رو بهت توصیه می کنم که بخونی، خیلی خوب و ساده EF رو آموزش داده Apress Pro Entity Framework 4.0

samadblaj
شنبه 14 مرداد 1391, 10:28 صبح
Sql Helper یک dllی هست که تمام کتابخانه های مربوط به sql را پوشش داده
و مزیت های آن نظم بخشیدن به کدنویسی و انعطاف پذیری آن می باشد
و همچنین می توانید سورس آن را دانلود کنید و به دلخواه تغییراتی اعمال کنید

ممنونم جانوس جان خیلی خوب توضیح دادی .
یه چیز دیگه که هست sql helper ابزار خود مایکرو سافت هست از تکنولوژیهای جدید نظیر EF سورس داره؟




اگه زبانت خوبه، این کتاب رو بهت توصیه می کنم که بخونی، خیلی خوب و ساده EF رو آموزش داده Apress Pro Entity Framework 4.0


ممنونم خودمم دنبال یه کتاب خوب میگشتم ، زبانمم بد نیست باید کنار بیایم. کتاب های Apress هم خیلی روان و خوبه.

تشکر ازلطف همگی