PDA

View Full Version : ترکیب ADO.Net و LINQ و EF ؟



nice_boy_a
یک شنبه 13 مرداد 1392, 13:18 عصر
سلام.
واسه کار با بانک(ثبت و ویراش و ...) میشه از 3 روش ADO.Net و LINQ و EF همزمان استفاده کرد ؟
اگه مثلا با LINQ عمل ثبت رو انجام بدیم،EF و ADO.NET اینجا چه کاره هستن؟
یا اگه مثلا با EF عمل ثبت رو انجام بدیم،LINQ و ADO.NET اینجا چه کاره هستن؟
چه جوری از ترکیب 3 روش باید استفاده کرد ؟
ممنون.

amir200h
یک شنبه 13 مرداد 1392, 13:24 عصر
شدنش که میشه. شما میتونی از چند روش به ی بانک وصل بشی. ولی خوب این مثه این میمونه که چای شیرینو با نارنگی قاطی کنی بعد با برنج بخوری :لبخند:

gilas1368
یک شنبه 13 مرداد 1392, 13:25 عصر
هر کدوم از اینا ی تکنولوژی برای دسترسی و اعمال پردازش های مختلف روی پایگاه داده ان

شما میتونید از هر کدوم از روش ها استفاده کنین و جواب موردنظرتون رو بدست بیارین و تمام مواردی رو ک شما لازم دارید تا روی پایگاه داده تون انجام بدید رو براتون انجام میدن

nice_boy_a
یک شنبه 13 مرداد 1392, 13:39 عصر
مثه این میمونه که چای شیرینو با نارنگی قاطی کنی بعد با برنج بخوری :لبخند:
:قهقهه:


هر کدوم از اینا ی تکنولوژی برای دسترسی و اعمال پردازش های مختلف روی پایگاه داده ان

شما میتونید از هر کدوم از روش ها استفاده کنین و جواب موردنظرتون رو بدست بیارین و تمام مواردی رو ک شما لازم دارید تا روی پایگاه داده تون انجام بدید رو براتون انجام میدن

یعنی اگه بخوام Insert و Update و Delete و select رو انجام، همه ی عملیات رو با مثلا LINQ انجام بدم؟ و با ADO.Net و EF کار نکنم؟

gilas1368
یک شنبه 13 مرداد 1392, 14:01 عصر
با هر کدومش میتونید انجام بدید

بستگی بخودتون داره

من میگم LINQ

amir200h
یک شنبه 13 مرداد 1392, 14:11 عصر
:قهقهه:



یعنی اگه بخوام Insert و Update و Delete و select رو انجام، همه ی عملیات رو با مثلا LINQ انجام بدم؟ و با ADO.Net و EF کار نکنم؟

من که مخالف روش های ویزاردیم. فقط ADO.Net رو کار میکنم

sohil_ww
یک شنبه 13 مرداد 1392, 14:44 عصر
من که مخالف روش های ویزاردیم. فقط ADO.Net رو کار میکنم

امیر جان متاستفانه هر جا می ریم می گن etity بلدی !!
یا با linq می خوان
در ضمن من اکثر جاها خوندم که سرعت linq از Ado.net بهتره

و از همه مهتر نامردی نکن لینک کجاش ویزاردی داداش :متعجب:

rezaei_y
یک شنبه 13 مرداد 1392, 16:07 عصر
سعی کن بری سمت EF

Arash_janusV3
یک شنبه 13 مرداد 1392, 16:42 عصر
به تازگی EF6 هم معرفی شده قطعا جای ADO.Net رو خواهد گرفت
البته ADO.Net ارزش های خودش رو حفظ خواهد کرد ولی تکنولوژی که به روزتر باشه استقبال بیشتری هم خواهد شد
مقاله در خصوص Entity Framework (http://barnamenevis.org/showthread.php?411204-Entity-Framework)

nice_boy_a
یک شنبه 13 مرداد 1392, 16:42 عصر
دوستان لطفا جواب کامل بدین.
لطفا با دلیل بگین
gilas1368 (http://barnamenevis.org/member.php?139528-gilas1368) چرا از LINQ استفاده کنم ؟

rezaei_y (http://barnamenevis.org/member.php?117919-rezaei_y) چرا EF ؟

یه سوال دیگه : واسه واکشی اطلاعات(Select) و قرار دادن در GridView روش LINQ رو پیشنهاد میکنید یا EF ؟ چرا ؟

rezaei_y
یک شنبه 13 مرداد 1392, 18:03 عصر
دوست عزیز من خودم خیلی با ado.net کار کردم ولی از زمانی که رفتم سراغ EF واقعا دارم از کدنویسی لذت میبرم مزیت های خیلی زیادی نصبت به ado.net داره

gilas1368
یک شنبه 13 مرداد 1392, 23:10 عصر
هر تکنولوژی ای ک معرفی میشه ی سری مزیت های نسبت ب تکنولوژی های قبل از خودش داره
من الان دارم با LINQ کار میکنم
قبلا با ADO.NET کار میکردم اما حالا ک دارم از LINQ استفاده میکنم کدنویسی برام راحتتر شده
و مطمئنا اگ ب سمت EF برم بازم آسونتر خواهد شد
استفاده از تکنولوژی ها ب شما بستگی داره
یکی با یک تکنولوژی قدیمی برنامه ای مینویسه ک شما با تکنولوژی جدید هم نمیتونید پیاده سازیش کنید
همه چیز به شما و اینک چ چیزی از برنامه نویسی و استفاده درست و اصولی از توابع و تکنولوژی ها در برنامه اتون، بستگی داره
اما EF وLINQ جدیدترن و عیب های تکنولوژی های قبل از خودشون رو پوشش میدن مخصوصا EF

RIG000
شنبه 02 شهریور 1392, 15:04 عصر
ef فرقش با لینک چیه؟

RIG000
شنبه 02 شهریور 1392, 15:29 عصر
ممنون که جواب میدین!!!!!!!!!!!!!!!!!!

rezaei_y
شنبه 02 شهریور 1392, 15:53 عصر
مطالب زیر رو یادم نیست از کدام سایت گرفتم .فکر کنم جواب سوال هاتون و بده

1-complexity یا پیچیدگی : البته منظور از پیچیدگی از نگاه سخت و آسان بودن نیست بلکه از نگاه امکاناتی که در اختیار شما قرار می دهد . مسلما LINQ امکانات و پیچیدگیهای کمتری دارد.
2-model یا مدل سازی : ما در Entity Framework براحتی می توانیم مدل سازی کنیم علاوه بر آن از تمام ارتباطات بین جدولها پشتیبانی می کند LINQ از یک ارتباط یک به یک بین کلاسها و جدولهای بانک اطلاعاتی پشتیبانی می کند .
3-پشتیبانی از بانک اطلاعاتی : LINQ to SQL فقط از بانک اطلاعاتی Sql_Server پشتیبانی می کند در حالی که Entity Framework می تواند از بانکهای اطلاعاتی مختلفی پشتیبانی کند .
4-زمان توسعه پذیری :To SQL LINQ می تواند به راحتی استفاده شود و به سرعت کار شما را پیش ببرد . اما در نرم افزارهای پیچیده و بزرگ بدلیل داشتن امکانات محدود و کم دیگر جوابگو نیست .
5-وراثت : Entity Framework از وراثت بین کلاسها براحتی استفاده و پشتیبانی می کند در حالی که این خاصیت در LINQ وجود ندارد .
6-نوع فایل : LINQ در فایلی با پسوند DBML ذخیره می شوند در حالی که Entity Framework در فایلهای EDMX و CSDL ,SSDL که با فرمت xml است ذخیره می شوند .
7-نوع مرکب : ما در Entity Framework می توانیم فیلدی مرکب complex type تعریف کنیم . این فیلد چیزی شبیه به ساختار ها است . اما این امکان درTo SQL LINQ وجود ندارد
8-کویری : همانطور که در آموزشهای خودم نوشتم . Entity Framework از چندین سبک برای اجرای کویری استفاده می کند . Linq to Entity , EntitySQL , Query With Method
9-کارایی : هر دو از نظر سرعت در اولین اجرا شاید بتوان گفت کند هستند . اما Eitity Framework از نظر کارایی بهتر عمل می کند .
10-توسعه آینده : مایکروسافت چندان علاقه ای به توسعه و ادامه راه LINQ to SQL ندارد اما در عوض بیشتر تمرکز و توسعه را بر مبنای تکنولوژیهای دیگری گذاشته است از جمله Entity Framework
11-ساخت بانک اطلاعاتی از مدل : ما فقط در Entity Framework می توانیم ابتدا مدل خودمان را طراحی کنیم و سپس با استفاده از آن مدل ، بانک اطلاعاتی را تولید کنیم.

RIG000
شنبه 02 شهریور 1392, 16:05 عصر
ممنون . حالا واسه ایجاد یه برنامه که از ef استفاده کنه چیکار میکنیم.؟ مثلا" linq to sql ما datacontaxt رو انتخاب میکنیم ...ا اما واسه یه برنامه که ef توش بکار رفته چکار میکنیم.؟

RIG000
شنبه 02 شهریور 1392, 16:14 عصر
11 چه جوری میشه؟

rezaei_y
شنبه 02 شهریور 1392, 16:16 عصر
دوست عزیز تفاوت آنچنانی با هم ندارن ولی شما چون لینک کار نکردید برید سراغ EF
آموزش EF هم تو این سایت هست هم تو سایت های دیگه یکی دو مثال حل کنی همه چی دستت میاد

veniz2008
شنبه 02 شهریور 1392, 21:14 عصر
سلام.
اجازه بدید یک مثال کوچیک درباره تفاوت های بین ADO و EF براتون بزنم :
قطعه کدهای زیر رو در نظر بگیرید :
ADO :


SqlConnection con = new SqlConnection("server = .\\md2008;DataBase = DBAzmoon;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("Select * From TblAdmin", con);
DataTable dt = new DataTable();
da.Fill(dt);
GrdAdmin.DataSource = dt;

و EF :


MyTestEntities db = new MyTestEntities();
GrdAdmin.DataSource = db.TblAdmin.ToList();

به نظرتون کدوم رو سریعتر میشه نوشت؟
قطعا کدی که کوتاه تر هست (EF) رو سریعتر میشه نوشت.
به نظرتون کدوم قطعه کد رو بهتر میشه درک کرد؟
قطعا ADO رو بهتر میشه درک کرد. (دستور sql ای وجود داره و DataAdapter ای وجود داره که نتیجه select رو میاره، همچنین دیتاتیبلی وجود داره که نتیجه برگشتی که با Adapter برمیگرده رو درونش می ریزیم. و حالا این دیتاتیبل که جدول سمت سی شارپ شماست رو درون یک گرید نمایش میدیم).
در EF زمان لازم برای برنامه نویسی کاهش پیدا کرده ولی همونطور که می بینید مفاهیم عملا فدای سرعت بیشتر شده.
کسی که قبلا ADO کار کرده و الان سمت LINQ و EF میره خودش درک میکنه که اون دو خط کد داره پشت صحنه چه کاری رو انجام میده.
EF داره از همون مفاهیم ADO استفاده میکنه ولی برنامه نویس رو درگیر کار با اشیایی مثل دیتاتیبل و دیتاست و ... نمیکنه.
البته این تنها تفاوت نیست و دوستان تفاوت های دیگه رو هم فرمودن که من دیگه اوناه رو تکرار نمیکنم.
اما در مورد سرعت اجرای کوئری ها :
اینو از stackoverflow :

First time EF loads metadata into memory, that takes a time.
It builds in-memory representation of model from edmx file,
or from source code if you are using code first.
Actually EF is build at the top of ADO.NET, so it can't be faster.
But it makes development much faster.
And improves maintainability of your code.

و اینم از msdn :

In general, if you want faster performance using ADO.NET
will give you low level support for this.
EF is a higher level abstraction so it may not be as fast in all cases.
So you trade off ease of use, writing fewer lines of code versus raw performance.

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

sohil_ww
شنبه 02 شهریور 1392, 22:03 عصر
منم کاملا با دوست عزیز آقای veniz موافق هستم

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


همین طور که می دونید هر نسخه دات نت توسعه و پیشرفتی از ورژن قبلی خودش هست و اگه با این تفسیر به موضوع نگاه کنیم متوجه می شیم که بین ef و Ado.net کدومین بهتر هستن

RIG000
دوشنبه 04 شهریور 1392, 09:00 صبح
بسیار عالی بود