در این جلسه در ادامه ی مطالب جلسه ی گذشته به طور مفصل به معرفی Entity Framework و OR Mapper ها صحبت خواهیم کرد. یکی از مواردی که در این جلسه مورد بحث قرار خواهند گرفت، معماری Entity Framework خواهد بود. به مانند جلسات قبل، با انجام یک مثال کاربردی، مباحث را پیش خواهیم برد. در پایان نیز به بررسی دستورات Linq می پردازیم.
مطالب آموزش داده شده در این جلسه به قرار زیر می باشند:
در جلسه ی آینده بر روی دستورات Linq به طور پیشرفته تر و کامل تر تمرکز خواهیم کرد و کوئری های نسبتا پیچیده را در درون برنامه های خود اجرا خواهیم کرد. همینطور با معماری Model First در Entity Framework آشنا خواهیم شد.
این مطلب یک جلسه از دوره آموزش #C می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.
سلام و خسته نباشید مجدد برای شما جناب زارعی عزیز امیدوارم هر جا که هستید و در هر شرایطی در سلامت کامل به سر ببرید. غیبت دو سه هفته ای بنده به علت مطالعه دقیق و نکته به نکته فصل چهارم بودش که هر ازگاهی و برای فیکس کردن مطالب ناچار به رجوع به فصول قبلی بخصوص مطالب مرتبط فصل سوم با فصل فعلی و ارنج کردن اطلاعات ذهنم بودم. و حتی برای فهم بهتر مطالب فصل پنجم و ششم از جلسه یکم تا بیست و ششم رو دوباره 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());
صرفا جهت آشنایی با این تابع مطرح شده. ولی در کل فرمت های مختلف تاریخی رو میشه از طریق اون اعمال کرد. در نت جستجو کنید تا مثال هایی رو ببینید.
با سلام خدمت استاد زارعی عزیز …از دوره بسیار خوب و جامع سی شارپ کمال تشکر را دارم …
من دوره های دیگری از این زبان را هم تهیه کرده بودم ولی هیچکدام به کاملی این دوره نبود …
میخواستم بدونم آیا دوره ای را برای asp.net هم برگزار میکنید؟
سلام دوست عزیز.
خیلی خوشحالم که راضی بودید از دوره. متاسفانه من برنامه ای ندارم برای asp.
موفق باشید.