دوره مجازی #C (جلسه 25): Entity Framework

- visibility ١٠ mode_comment

در این جلسه در ادامه ی مطالب جلسه ی گذشته به طور مفصل به معرفی Entity Framework و OR Mapper ها صحبت خواهیم کرد. یکی از مواردی که در این جلسه مورد بحث قرار خواهند گرفت، معماری Entity Framework خواهد بود. به مانند جلسات قبل، با انجام یک مثال کاربردی، مباحث را پیش خواهیم برد. در پایان نیز به بررسی دستورات Linq می پردازیم.

مطالب آموزش داده شده در این جلسه به قرار زیر می باشند:

  • معرفی وب سایت تخصصی آموزش Entity Framework
  • معرفی مفهوم OR Mapper ها
  • معرفی Entity Framework و سیر تکامل آن
  • آشنایی با معماری Entity Framework
  • آشنایی با انواع رویکرد ها در استفاده از Entity Framework
  • آشنایی با کنترل کردن Relationship ها در Entity Framework
  • معرفی Model و نحوه ی ساختن آن
  • نحوه ی Update کردن Model
  • آشنایی با Linq
  • معرفی دستورات و توابع کابردی در کار با لیست ها و آرایه ها
  • آشنایی با کوئری های Linq در سی شارپ
  • معرفی نوع داده ای var
  • آشنایی با متد where
  • معرفی نحوه ی اضافه/حذف/ویرایش داده ها توسط Entity Framework
  • انواع رهیافت ها در هنگام اضافه کردن داده ها به جداول با ارتباط یک به چند و چند به چند
  • انجام چندین کوئری ساده توسط Linq

در جلسه ی آینده بر روی دستورات Linq به طور پیشرفته تر و کامل تر تمرکز خواهیم کرد و کوئری های نسبتا پیچیده را در درون برنامه های خود اجرا خواهیم کرد. همینطور با معماری Model First در Entity Framework آشنا خواهیم شد.

info توجه

این مطلب یک جلسه از دوره آموزش #C می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش #C

comment دیدگاه کاربران
پژمان

سلام و خسته نباشید مجدد برای شما جناب زارعی عزیز امیدوارم هر جا که هستید و در هر شرایطی در سلامت کامل به سر ببرید. غیبت دو سه هفته ای بنده به علت مطالعه دقیق و نکته به نکته فصل چهارم بودش که هر ازگاهی و برای فیکس کردن مطالب ناچار به رجوع به فصول قبلی بخصوص مطالب مرتبط فصل سوم با فصل فعلی و ارنج کردن اطلاعات ذهنم بودم. و حتی برای فهم بهتر مطالب فصل پنجم و ششم از جلسه یکم تا بیست و ششم رو دوباره trace کردم تا تسلسل مطالب مرتبط و ارتباط و استراتژی و نحوه پیاده سازی برنامه های الگوریتمی فصل یک و دو رو با مطالب فصل سه و چهارم به لحاظ سینتاکس کدها کاملا درک کنم. اینکه از کجا شروع کردیم به چه نکاتی رسیدیم و چرا الان اینجا هستیم و در فصل پنجم و ششم باید دنبال چه مفاهیمی باشم. غرض از مزاحمت تعدادی سئوال دارم که بین جلسات 25 و 26 تقسیم کرده ام ممنون میشم پاسخ بفرمایید و در صورت لزوم لینک منابع مطالعاتی لازم رو در اختیارم بذارید. در ضمن از اونجا که بنده حتی یک واو از فصل پنجم و ششم رو هنوز نخوانده ام اگر سئوال یا ابهام بنده در یکی از جلسات پیش رو و در فصول آینده پاسخ داده شده، لطفا بفرمایید بنده یادداشت کرده و تا رسیدن به جلسه مورد نظر صبر خواهم کرد اگر جواب نگرفتم مجددا مزاحم خواهم شد. پیشاپیش از حسن توجه شما کمال تشکر رو دارم و ممنون بابت انرژی مثبتی که در طول دوره و برای بیان مطالب تا به اینجا گذارده اید.

آرین زارعی

سلام دوست عزیز. جواب سوالات رو از انتها تا به اینجا در پست های متفاوت نوشتم.
یه نکته ای که هست خیلی از سوالاتتون مرتب میشه به سیاست های طراحی یک ابزار مثل entityframrwork که عملا کمتر کسی ازش اطلاع داره . اینطور موارد و خیلی از مساپل دیگه رو باید با جستجو در وب به جوابشون برسید.
موفق و پیروز باشید.

پژمان

چرا صفات زیر در کلاس Course که توسط EntityFramework مپ شده اند به این شکل معرفی شده اند؟

public string Title { get; set; }
public Nullable CourseUnit { get; set; }

مگر Title Nullable نیست؟ پس چرا فقط نوع آن مشخص شده و اشاره ای به Nullable بودن آن نشده.
ولی در مورد CourseUnit بدون آنکه اشاره ای به نوع آن بشود فقط نوشته شده Nullable

اصلا آیا ذکر nullable بودن یک پراپرتی ضروریه؟ در اینصورت چرا در طول برنامه هامون تا به حال این نکته رو رعایت نکرده ایم. ممنون

آرین زارعی

هر ORM ساز و کار خودش رو داره . شما به همه ی کد ها معمولا به طور یکجا دسترسی ندارید و به خاطر کلاس های پارشالی که درست میشه توسط خود ORM در سی شارپ خیلی چیزها رو متوجه نمیشید. شما اگه به دنبال این هستید که چرا یه orm یه کاری رو میکنه باید برید در وب به طور عمیق جست و جو کنید.

پژمان

نحوه اعلان و Syntax متغیر var رو متوجه میشم ولی نکته اینجاست، مفهومش یعنی آرایه ای از لیست متغیرهای با نوعهای متفاوت(ستونهای جدول مورد نظر ما) میپذیرد؟ با این اوصاف فرقش با ArrayList چی هست؟ چون به نوعی ورودی هر کدوم پارامترهای از نوع Object هستش با این تفاسیر.

آرین زارعی

خیر . ساز و کار خاص خودش رو داره .در ران تایم مشخص میشه . باید یه کم مفاهیم مربوط به کامپایلر رو مطالعه کنید تا بفهمید ساز و کار رو .

پژمان

سئوالی که واسم مطرحه در عکس مربوط به شکل معماری EF هستش و اینکه تفاوت نمونه کدهای Linq در حالتهای Linq To Entity و Entity Sql Query رو متوجه نمیشم یعنی چه وقت در نقش اولی و چه وقت در نقش دومی هستند؟ واینکه تفاوت نقش لایه Object services و Entity Data Provider در کجاست؟ یعنی هر جا سخن از context به میان آمد مربوط به لایه Entity Data Provider است؟ ابهام دیگه اینکه به مانند شکل: در کدام حالت Linq مستقیما وارد این لایه میشود و چه وقت از لایه Object Services وارد میشود؟ در واقع میخواهم بفهمم که کدام بخش از کدهای Linq مربوط به کدام لایه است با توجه به فلش های ورودی Linq به هر لایه با توجه به عکس.

آرین زارعی

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

پژمان

لزوم استفاده از تابع ToShortDateString()چی هست؟ کما اینکه در مثالی دیگر و در درون Console.writeline() نیز از آن برای چاپ مقدار یک ستون از نوع تاریخ مجددا استفاده کرده اید.
SqlParameter p = new SqlParameter(“@DESDATE”, DateTime.Now.ToShortDateString());

آرین زارعی

صرفا جهت آشنایی با این تابع مطرح شده. ولی در کل فرمت های مختلف تاریخی رو میشه از طریق اون اعمال کرد. در نت جستجو کنید تا مثال هایی رو ببینید.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.