PDA

View Full Version : ADO یا Linq یا entity framework یا ... بهترند؟



asman.abi
شنبه 29 فروردین 1394, 16:12 عصر
سلام
می خواستم یه مقایسه بین روش هایی که با بانک های اطلاعاتی ارتباط برقرار می کنیم داشته باشم که کدام منعطف تر و سازگارتره و میشه همه کار با هر نوع نیازی رو جواب بده ؟
مهم نیست چقدر کد طولانی تر یا سخت تره مهم کارایی (دارای سربار کمتر و سریع تر) و انعطاف (استخراج هر نوع درخواست از پایگاه داده) هست.

asman.abi
شنبه 09 خرداد 1394, 17:33 عصر
چقدر جواب :کف:

SabaSabouhi
یک شنبه 10 خرداد 1394, 09:46 صبح
سلام
می خواستم یه مقایسه بین روش هایی که با بانک های اطلاعاتی ارتباط برقرار می کنیم داشته باشم که کدام منعطف تر و سازگارتره و میشه همه کار با هر نوع نیازی رو جواب بده ؟
مهم نیست چقدر کد طولانی تر یا سخت تره مهم کارایی (دارای سربار کمتر و سریع تر) و انعطاف (استخراج هر نوع درخواست از پایگاه داده) هست.

سلام
من این پست رو ندیده بودم.
اول از صورت مساله، LinQ رو می‌گذاریم کنار. می‌مونه Ado و EF که من ترجیح می‌دم بگم Sql Command و EF.
خیلی درگیر جزییات نمی‌شم، خلاصه می‌گم که Sql Command به مراتب سریع‌تره، ولی تو غالب پروژه‌ها ( منهای جاهایی که سرعت خیلی خیلی مهمه )
EF مقرون به صرفه‌تره. چون کد نویسی به مراتب کمتری نیاز داره، و هزینه‌ی تولید نرم‌افزار و پشتیبانی رو به مراتب پایین میاره.
در نتیجه انتخاب برتر EF خواهد بود.
و اما LinQ هیچ ربطی به این دو تا نداره. و یک زبان هست برای گرفتن Query از دیتابیس.
من بجای LinQ از LinQ Extension Methods استفاده می‌کنم که در کنار هر دو گزینه قابل استفاده هست.
LinQ در کنار EF:


using ( var entities = new DbContext ){
var list = entities.MyTable
.Where( x=> x.Date >= DateTime.Today )
.Join ( entities.MyTable2.Where( x=> x.IsEnabled ), t1=>t1.Table2Id, t2=>t2.Id, ( t1, t2)=>t1 )
.OrderBy ( x=> x.Date )
.ToList();
}

در کنار Sql Command


var list = myDataTable
.Rows
.Cast<DataRow>()
.Where( x=> ((DateTime)x["Date"] ) > DateTime.Today )
.OrderBy( x=>(DateTime)x["Date"] )
.ToList()
.ConvertAll( x=> {
var obj = new MyClass{
Id = (int)x["Id'],
Date = (DateTime)x["Date"],
. . .
};
return obj;
} );





به صورت خلاصه گزینه‌ی انتخابی من EF در کنار LinQ Extension Methods هست. ( البته یه مقدار هم سلیقه‌ای هست )
من هم علاقه دارم که نظر سایر دوستان با تجربه رو بدونم.

صبا صبوحی

asman.abi
دوشنبه 11 خرداد 1394, 21:55 عصر
ممنون از پاسخ شما

البته شما ADO رو در نظر نگرفتید. که به قول شما بهش میشه گفت sql command.
به شخصه از ADO استفاده می کنم. اصلا به طولانی تر شدن کد کاری ندارم. چون کارایی مهمه. سرعت مهمه

SabaSabouhi
سه شنبه 12 خرداد 1394, 09:50 صبح
ممنون از پاسخ شما

البته شما ADO رو در نظر نگرفتید. که به قول شما بهش میشه گفت sql command.
به شخصه از ADO استفاده می کنم. اصلا به طولانی تر شدن کد کاری ندارم. چون کارایی مهمه. سرعت مهمه

سلام
دوباره پست قبلی من رو بخون.
متال دومی که زدم کار با LinQ Extension Methods بود هنگامی که شما یک DataTable رو توسط SqlCommand و SqlDataAdapter پر می‌کنی.
و دلیل این که از واژه‌ی ADO استفاده نمی‌کنم اینه که خود EF هم از ADO استفاده می‌کنه.
و اگر سرعت تا این حد مهمه، اکیداً توصیه می‌کنم که از Sql Command استفاده کنی.

صبا صبوحی

asman.abi
سه شنبه 12 خرداد 1394, 15:46 عصر
سلام
دوباره پست قبلی من رو بخون.
متال دومی که زدم کار با LinQ Extension Methods بود هنگامی که شما یک DataTable رو توسط SqlCommand و SqlDataAdapter پر می‌کنی.
و دلیل این که از واژه‌ی ADO استفاده نمی‌کنم اینه که خود EF هم از ADO استفاده می‌کنه.
و اگر سرعت تا این حد مهمه، اکیداً توصیه می‌کنم که از Sql Command استفاده کنی.

صبا صبوحی

من به ADO میگم sql command .
پس برتری از آن ADO هست دیگه؟

mohammadhafez
سه شنبه 12 خرداد 1394, 16:13 عصر
سلام
می خواستم یه مقایسه بین روش هایی که با بانک های اطلاعاتی ارتباط برقرار می کنیم داشته باشم که کدام منعطف تر و سازگارتره و میشه همه کار با هر نوع نیازی رو جواب بده ؟
مهم نیست چقدر کد طولانی تر یا سخت تره مهم کارایی (دارای سربار کمتر و سریع تر) و انعطاف (استخراج هر نوع درخواست از پایگاه داده) هست.


سلام
یه نگاهی به این دو لینک بندازید به نتیجه خوبی میرسید البته اگه بخوایید سلقیه رو کنار بزارید ...:چشمک:

http://barnamenevis.org/showthread.php?309288-%D8%B3%D8%B1%D8%B9%D8%AA-%DA%A9%D8%AF%D9%88%D9%85-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-%D8%A8%DB%8C%D8%B4%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA-%D8%9F-(-Entity-freamwork-%DB%8C%D8%A7-Ado-net-)

http://mesbahi.net/post/1388/10/30/Entity-Framework-db8cd8a7-Linq-2-SQL-db8cd8a7-d987d985d988d986-ADONET-d89f

علی فتحی
پنج شنبه 21 خرداد 1394, 12:31 عصر
من راحتی کار رو در لینک میبینم از لحاظ کد نویسی و سرعت هم با انتی تی فرقی نداره

asman.abi
جمعه 29 خرداد 1394, 00:23 صبح
بازم سلیقه ای شد. البته با نظر صبا صبوحی موافقم.
توی قدرت در TSQL کدوم بهترند. با ADO که می شه هر کاری کرد. تو linq باید بچرخی شاید پیدا کنی. بیشتر مواقع نمیشه کد روونی زد کد طولانی میشه. از نظر سرعت هم بگید ADO بیشتر میشه. چون مستقیم اعمال میکنه. دیگه مثل linq نمی آد ترجمه کنه بعد به sql بفرسته. یعنی هم سرعت هم انعطاف.
تو EF نظری ندارم چون کار نکردم. :ناراحت::افسرده:
دوستان نظرشون رو بگن.