قسمت چهاردهم که در حال مطالعه آن می باشید ، شروع معرفی و استفاده از داده ها به صورت Dynamic می باشد. از این قسمت به بررسی ماهیت EF و استانداردهای آن و کم کم حذف داده های HardCode شده در سطح پروژه خواهیم پرداخت.
بسمه تعالی
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش چهاردهم
قسمت چهاردهم که در حال مطالعه آن می باشید ، شروع معرفی و استفاده از داده ها به صورت Dynamic می باشد. از این قسمت به بررسی ماهیت EF و استانداردهای آن و کم کم حذف داده های HardCode شده در سطح پروژه خواهیم پرداخت.
در ابتدا اجازه بدهید ببینیم Entity Frame Work چیست؟.
در اصل EF یک ابزار دسترسی به دیتا بیس می باشد. در اصل EF جز Object Relational Mapper ها می باشد که به اختصار به آنها ORM هم گفته میشود.
در اصل وظیفه تبدیل اجزای درون بدنه دیتابیس به Object های قابل شناسایی برای پروژه در سطح کد به عهده EF و کلن ORM ها می باشد. قبل از معرفی EF ، میبایست به صورت دستی یک Connection باز می کردیم ، عملیات روی دیتابیس را انجام میدادیم و سپس Connection را میبستیم. در حال حاضر به دلیل کار در یک Higher Level of Abstraction ، دیگر نیازی به انجام این امور به صورت دستی نیست که البته خود این موضوع هم جای بحث بسیار دارد.
EF یک Object به نام DbContext میسازد که یک نوع GateWay برای دسترسی به دیتابیس خواهد بود.
بر اساس تصویر بالا ، یک DbContext دارای حداقل یک DbSet خواهد بود که نماینده یک جدول درون دیتابیس می باشد . در اصل به ازای هر جدول دیتابیس ، یک DbSet خواهیم داشت.
برای دستور نویسی یا به اصطلاح همان Query نویسی ، باید از Linq استفاده شود و EF دستورات مارا به SQL Statements تبدیل خواهد نمود.
هر گونه تغییر مانند Insert یا Update یا Delete دیتا توسط EF شناسایی شده و در صورت اعمال دستور نهایی بر روی دیتا بیس اعمال خواهد شد.
در حال حاضر 2 متدولوژی رایج در EF وجود دارد .
در تصویر بالا هر 2 نوع ذکر شده است . ابتدا نگاه کوتاهی به DataBase First خواهیم انداخت .
در DataBase First ابتدا جداول و دیگر Object ها ایجاد شده و سپس از طریق یک EF Generator هر Object به سطح پروژه معرفی خواهد شد.
روش Code First دقیقن برعکس این روش است .یعنی اول Domain Class ایجاد شده و سپس دیتابیس در سطح سرور شکل میگیرد.
از این 2 روش ، کدام یک بهتر است؟ از لحاظ تئوری باید گفت که Code First ترجیح دارد . مزایای زیر را برای Code First تصور نمود.
- آسان سازی تولید و عدم نیاز به چند باره کاری : به عنوان مثال در همین پروژه اگر قرار باشد یک فیلد جدید اضافه کنیم ، نیاز نیست چند جا اینکار انجام شود و فقط در یک نقطه و کلاس مربوطه این عملیات انجام خواهد شد . البته مشقات و دردسرهای Migration وجود دارد و شاید بتوان گفت دردسر افزودن یک یا چند فیلد در Table های SQL مشکلات کمتری داشت.
- نکته بعدی ساپورت انواع دیتابیسها می باشد .
- قابلیت تست پذیری بیشتر
خوب باید گفت که هر تکنیک مزایا و معایب خود را دارد و میتوان ساعتها در مورد آنها صحبت نمود. کاری که ما باید انجام دهیم شروع عملی Code First در بخش بعدی و استفاده از آن در سطح پروژه میباشد. پس با ما همراه باشید.