PDA

View Full Version : Entity Framework



راحیل مهربان
جمعه 08 اسفند 1393, 21:53 عصر
سلام دوستان
وقتتون بخیر

میشه یکی از دوستا زحمت بکشه و یه تعریف مفید از Entity Framework بهم بده؟ اینکه چیه، چطور به وجود اومده و چه کاربردی داره؟
اگه یه منبع خوب هم معرفی کنید ممنون میشم

babahooman
جمعه 08 اسفند 1393, 22:14 عصر
تا اونجایی که من دیدم entity framework منبع فارسی خوبی نیست بهترین منبع فیلم های لیندا ست که باید انگلیسیت خوب باشه

ali_md110
جمعه 08 اسفند 1393, 23:59 عصر
EF برای کار با داده ها کاربرد داره و این داده ها ممکنه از یک بانک اطلاعاتی بزرگ مثل اسکیول سرور باشه یا اکسس یا سایر منابع دیگه
روش سنتی دسترسی داده ها بدین صورت بود که از یک بانک اطلاعاتی موجود که قبلا طراحی شده مثل اسکیول سرور میومدیم با دستورات اسکیول و بکار گیری دیتاست ها و دیتاریدر و دیتااداپتور داده ها رو واکشی یا درج و حذف میکردیم
ولی در روش جدید ماکروسافت اومد گفت که ما خودمون با تعریف مدل که به کلاسهای Poco مشهور هستن بیایم جداول بانک رو توسط کدهای سی شارپ یا وی بی شبیه سازی کنیم و با دستورات linq بجای دستورات اسکیول استفاده کنیم در این روش با اشیایی سروکار داریم که به هم وصل هستند و به ORM مشهورند و دقیقا معادل بانک اطلاعاتی ما
با ef میتونیم با بانکی که از قبل موجود هست کارکنیم که به DataBase First شهرت داره
یا روش Model First و روش Code First
محبوب ترین روش Code First هست یعنی اینکه فارغ از اینکه با چه نوع بانک اطلاعاتی میخوایم کار بکنیم بیایم جداول رو با کد برنامه طراحی بکنیم و با توجه به نوع رشته اتصال بانک مقصد که در برنامه مشخص کردیم بانک رو برامون بسازه یعنی EF طراحی شده برای همه نوع بانک اطلاعاتی

در روش دستیابی داده با ef
مزایای زیادی وجود داره منجمله از غلط های املایی دستورات اسکیول خلاص میشیم سرعت برنامه نوسی فوق العاده بالا هست
میتونید سری به سایت
http://www.dotnettips.info
بزنید تا دلتون بخاد درباره این تکنولوژی بحث شده و از منابع غنی و قدرتمند فارسی هست

راحیل مهربان
شنبه 09 اسفند 1393, 09:56 صبح
مرسی از توضیحاتتون
طراحی bpms ها هم از طریق ef هستش؟
من میخوام یه برنامه شروع کنم که بانک به نسبت بزرگی داره. کلی جدول و view و sp و .....
توی برنامم از چندین جدول به طور هم زمان استفاده کنم، میخوام که سرعت بالا باشه، استفاده از ef درسته؟

SabaSabouhi
شنبه 09 اسفند 1393, 12:16 عصر
مرسی از توضیحاتتون
طراحی bpms ها هم از طریق ef هستش؟
من میخوام یه برنامه شروع کنم که بانک به نسبت بزرگی داره. کلی جدول و view و sp و .....
توی برنامم از چندین جدول به طور هم زمان استفاده کنم، میخوام که سرعت بالا باشه، استفاده از ef درسته؟

سلام
بدون شک اگر از SqlCommand استفاده کنی، سرعتت بالاتره. اما برای پروژه‌ی بزرگ
استفاده از EF قطعاً به صرفه‌تر هست. میزان کد نویسی رو کم می‌کنه و هزینه‌ی پشتیبانی رو هم پایین میاره.

صبا صبوحی

ali_md110
شنبه 09 اسفند 1393, 19:25 عصر
Performance استورد پروسیجر برای واکشی اطلاعات قوی تر هست نسبت به دستورات linq ولی استفاده از Navigation Property ها و خواص راهبری و سایر امکانات دیگر ef سرعت برنامه نویسی رو بالا میبره و لذت بخش تر میکنه و نگهداری و توسعه برنامه هم بالاتره
امروزه به نظر من کار با روش سنتی دسترسی داده یک نوع برگشت به عقب هست و اشتباه بزرگ
میتونید به راحتی برای انواع پایگاه داده با ef برنامه نویسی کنید
به نظر من برای هر پروژه چه بزرگ چه کوچک گزینه اولتون ORM باشه

SabaSabouhi
شنبه 09 اسفند 1393, 21:43 عصر
Performance استورد پروسیجر برای واکشی اطلاعات قوی تر هست نسبت به دستورات linq ولی استفاده از Navigation Property ها و خواص راهبری و سایر امکانات دیگر ef سرعت برنامه نویسی رو بالا میبره و لذت بخش تر میکنه و نگهداری و توسعه برنامه هم بالاتره
امروزه به نظر من کار با روش سنتی دسترسی داده یک نوع برگشت به عقب هست و اشتباه بزرگ
میتونید به راحتی برای انواع پایگاه داده با ef برنامه نویسی کنید
به نظر من برای هر پروژه چه بزرگ چه کوچک گزینه اولتون ORM باشه

سلام
دوست من، با بیش‌تر گفته‌های شما موافقم. فقط اما اگه سرعت خیلی مهم باشه، مجبوریم یه جاهایی تصمیم دیگه‌ای بگیریم.
من یکی از طرف‌داران EF هستم، مطئمنم هستم که این رو می‌دونی. اما در پروژه‌ی جاری‌ام، که اصلاً هم کوچیک نیست ( حدود 45 تا پروژه توش داره )
در یک جا از Sql Command استفاده کردم.
و اعتقاد دارم، که کاربر نباید هزینه‌ی علاقه‌ی من به EF رو بپردازه. اگه جایی مساله‌ی سرعت بحرانی می‌شه، من حاضرم به قول شما برگشت به عقب کنم.

صبا صبوحی

راحیل مهربان
شنبه 09 اسفند 1393, 21:54 عصر
راستش من یه بخشی از صحبت هاتون رو متوجه نمیشم....
کاش میشد یه تاپیک با عنوان آموزش EF داشته باشین و با یه مثال کوچیک (بانک مختصر) آمورش بدین

SabaSabouhi
شنبه 09 اسفند 1393, 22:18 عصر
راستش من یه بخشی از صحبت هاتون رو متوجه نمیشم....
کاش میشد یه تاپیک با عنوان آموزش EF داشته باشین و با یه مثال کوچیک (بانک مختصر) آمورش بدین

سلام
من دوست دارم که این کار انجام بشه، اما گمان نکنم فعلاً وقت کنم. در صورتی که سوالی داری من در صورت داشتن دانش کافی پاسخ‌گو هستم.
و در غیر این صورت هم اینجا دوستانی که خیلی بیش‌تر از من دانش و تجربه دارن زیاد هستن، به احتمال خیلی زیاد پرسش‌هات بدون جواب نمی‌مونن.

صبا صبوحی

ali_md110
شنبه 09 اسفند 1393, 22:39 عصر
سلام
دوست من، با بیش‌تر گفته‌های شما موافقم. فقط اما اگه سرعت خیلی مهم باشه، مجبوریم یه جاهایی تصمیم دیگه‌ای بگیریم.
من یکی از طرف‌داران EF هستم، مطئمنم هستم که این رو می‌دونی. اما در پروژه‌ی جاری‌ام، که اصلاً هم کوچیک نیست ( حدود 45 تا پروژه توش داره )
در یک جا از Sql Command استفاده کردم.
و اعتقاد دارم، که کاربر نباید هزینه‌ی علاقه‌ی من به EF رو بپردازه. اگه جایی مساله‌ی سرعت بحرانی می‌شه، من حاضرم به قول شما برگشت به عقب کنم.

صبا صبوحی


سلام
فقط سرعت ملاک یک برنامه خوب نیست فاکتورها نسبت به برنامه متفاوت هست من که توسعه یک برنامه برام مهمتر هست بعضی وقتا یک برنامه مینویسیم و کاربر تقاضای تغییرات اساسی در برنامه میخواد اگر مدتی از اون گذشته باشه و تکنیکهای جدید و به روز تر اومده باشه من که حاضرم از اول اون برنامه رو بنویسیم واون برنامه قبلی رو ادامه ندم
امروز با اومدن پترنها قوی مثل MVVM و MVC و فناوری مثل ef بهترین گزینه هست

shahab2025
دوشنبه 11 اسفند 1393, 12:15 عصر
لطفاٌ در میان این بحث داغ، مرا هم راهنمایی کنید ؟
آیا میشود با EF هم به صورت سه لایه برنامه نویسی کرد
من آموزش مختصری از این تکنولوژی مطالعه کردم ولی نفهمیدم در کدامیک از لایه های برنامه من جای میگیرد؟:متفکر:

ghasem110deh
دوشنبه 11 اسفند 1393, 12:46 عصر
سلام به همه ...
آموزش درست و حسابی هم ازش نیست ! هر جا آموزش گذاشتن نصفه و نیمه گذاشتن ...
اگه یه منبع درست و ح میشناسین لطفا معرفی کنید :)

elec60
دوشنبه 11 اسفند 1393, 19:23 عصر
http://www.entityframeworktutorial.net

ali_md110
دوشنبه 11 اسفند 1393, 19:36 عصر
بله میشه طراحی چند لایه انجام داد استاد این کاره
خب خیلی از دوستان چند لایه بودن رو به اینکه چند پروژه یا کتابخانه توی برنامه باشه رو به جند لایه تعبیر میکنن در صورتیکه برنامه چند لایه بحث جدایی داره ولی من طبق همین تعبیر دوستان مثال میزنم
فرض کنیم از Code First استفاده میکنیم لایه اول کتابخانه ی کلاسهای مدل و یا Ef ما هست و به لایه تجاری معروفه معمولا DataLayer یا DomainClass مینامند
لایه دیکه لایه Service هست که یک سطح بالاتر از لایه قبلی هست و جائی هست که مابین کتابخانه مدل و لایه نمایشی یا اینترفیس قرار میگیره ووظیفش انتقال داده ها از لایه نمایشی به لایه مدل و درنهایت دیتابیس هست در لایه سرویس متدهای اضافه کردن و برگردادن اشیاء لیستی و سایر فرامین قرار میگیره دراین لایه معمولا Interface ها قرار میگیرند
میشه بعد از لایه سرویس یک کتابخانه دیگه قرار داد و اسمش گذاشت Infrastructure و توی این کتابخانه View Model هامون قرار بدیم
ویومدل ها میشه هسته مرکزی و کلاس های این کتابخانه از لایه Service دستورات را دریافت و تحویل لایه نمایش میدهد و برعکس
در این لایه از واسط هایی که در لایه Serveice تعریف کرده ایم میشه به این کلاسها تزریق کرده و منابع لازم در اختیارشون قرار بدبم

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

adineh67
دوشنبه 11 اسفند 1393, 19:43 عصر
سلام به همگی
تشکر از ایجاد کننده ی این تاپیک و همه ی دوستان پاسخگو

دوستان من برنامه نویسی میکنم ولی تو مفاهیم ضعیف هستم من واسه انجام پروژه ها بانک اطلاعاتیمو تو sql طراحی می کنم و توسط سی شارپ و از طریق linq با پایگاهم ارتباط برقرار می کنم اغلب سعی میکنم دستورات رو بصورت استورپروسیجر تو sql آماده کنم و در محیط سی شارپ از اونا استفاده کنم
آیا این روش همون entity framework هست ؟
سوال دیگه اینکه قبلا از طریق دیتاست و دیتاریدر با پایگاه ارتباط برقرار میکردم اون روش چی نامیده میشه؟

ali_md110
دوشنبه 11 اسفند 1393, 21:02 عصر
سلام به همگی
تشکر از ایجاد کننده ی این تاپیک و همه ی دوستان پاسخگو

دوستان من برنامه نویسی میکنم ولی تو مفاهیم ضعیف هستم من واسه انجام پروژه ها بانک اطلاعاتیمو تو sql طراحی می کنم و توسط سی شارپ و از طریق linq با پایگاهم ارتباط برقرار می کنم اغلب سعی میکنم دستورات رو بصورت استورپروسیجر تو sql آماده کنم و در محیط سی شارپ از اونا استفاده کنم
آیا این روش همون entity framework هست ؟
سوال دیگه اینکه قبلا از طریق دیتاست و دیتاریدر با پایگاه ارتباط برقرار میکردم اون روش چی نامیده میشه؟

روش دیتاست و دیتاریدر قسمتی یا تکنیکی از Ado.net هست که روش سنتی کار با بانکهای اطلاعاتی هست و معمولا جوابگو هم هست و Linq To Entity یا ساده تر کار با عبارات لامبدا بوسیله Ef تکنولوژی پیشرفته ماکروسافت در Ado.net هست
توی Ef میشه از SP ها استفاده کرد ولی دیگه برنامه شما مختص یک نوع بانک خاص مثل اسکیول سرور میشه
Linq توی فضای نام System.Linq قرار داره و میتونیم بر روی Datasetیا xml یا فریموورکی مثل ef دستوراتش پیاده سازی کنیم
پس همین که از linq استفاده کنیم نمیشه گفت از entity framework استفاده کردیم
برای کار با EF باید کتابخانه اون رو دانلود کنید و به برنامتون رفرنس بدید و از منابع اون با دستورات linq یا عبارات لامبدا استفاده کنید

SabaSabouhi
دوشنبه 11 اسفند 1393, 21:35 عصر
سلام به همگی
تشکر از ایجاد کننده ی این تاپیک و همه ی دوستان پاسخگو

دوستان من برنامه نویسی میکنم ولی تو مفاهیم ضعیف هستم من واسه انجام پروژه ها بانک اطلاعاتیمو تو sql طراحی می کنم و توسط سی شارپ و از طریق linq با پایگاهم ارتباط برقرار می کنم اغلب سعی میکنم دستورات رو بصورت استورپروسیجر تو sql آماده کنم و در محیط سی شارپ از اونا استفاده کنم
آیا این روش همون entity framework هست ؟
سوال دیگه اینکه قبلا از طریق دیتاست و دیتاریدر با پایگاه ارتباط برقرار میکردم اون روش چی نامیده میشه؟

سلام
ضمن تایید گفته‌های دوستم ali_md110 اضافه می‌کنم که چند روش وجود داره، جدیدترینش که دوستمون هم بهش اشاره کرد، Code First هست. چیزی شما دنبالش هست Database First هست.
شما برای استفاده از EF باید یک EDMX تو پروژه‌ات ایجاد کنی، بعد اطلاعات دیتابیس رو توش منتقل کنی.
با این روش دیگه مستقیماً خودت به دیتابیس سر نمی‌زنی و EF کار بارگزاری اطلاعات و ذخیره تغییرات رو بر عهده داره.
حتماً این رو امتحان کن. من قبلاً زیاد با SQL Command کار می‌کردم، اما واقعاً استفاده از EF برای تولید برنامه راحت‌تر و سریع‌تر و دوست‌داشتنی‌تر هست.

صبا صبوحی

راحیل مهربان
جمعه 15 اسفند 1393, 11:04 صبح
سلام دوباره و تشکر از دوستان به خاطر مشارکت تو این بحث :)

ببینید من با sql آشنایی لازم رو دارم . از طرفی پروژم بزرگ و مهمه. میخوام به لحاظ برنامه نویسی و اصول و .... خوب باشه، بروز باشه و به بهترین صورت نوشته شه.
اینطور که فهمیدم ef برای کارم مناسبه، به نظرتون میتونم برا پروژم استفاده کنم؟ از این جهت میگم که تازه دارم یاد مبگیرم و پروژم رو هم میخوام شروع کنم...

آقای ali_md110 منتظر پروژتون هستم

ali_md110
جمعه 15 اسفند 1393, 12:41 عصر
سلام شک نکنید گزینه اولتون ORM باشه
ببینید اگر میخواید تازه شروع کنید که کمی واستون زمان بر هست ولی یادگیریش خیلی روان و ساده در ضمن خیلی سرعت برنامه نویسی بالا هست و توسعه برنامه هم بالا
دارم پروژه ام آماده میکنم به محض آماده شدن اپ میکنم