امروزه برنامه ها وابستگی کاملی به ذخیره سازی داده ها و سپس واکشی و بازایابی آنها برای نمایش به کاربران دارند. سایت ها و برنامه های با واسط گرافیکی (GUI) دو دسته بندی اصلی هستند که باید داده هایی را بر اساس درخواست کاربر، نمایش دهند. در حال حاظر منابع داده (Data Source) زیادی وجود دارند که برنامه ها می توانند از آنها استفاده کنند. پایگاه داده های رابطه ای و یا پایگاه داده های غیر رابطه ای  NoSQL و یا وب مانند وب سایت ها و API های JSON و یا فایل های XML، همگی گونه های متفاوتی هستند که داده ها را در خود نگه می دارند و لازم است تا آنها را درون برنامه و بر اساس نیاز و درخواست کاربر، نمایش دهیم.

شاید مهمترین و پر کاربرد ترین پایگاه داده های رابطه ای مانند  SQL Server, MySQL , Oracle و PostgreSQL باشند. شما باید یکی از این پایگاه داده ها  یا هر پایگاه داده دیگری را برای ذخیره سازی داده ها انتخاب کرده و سپس توسط واسط های برنامه نویسی (API) آن پایگاه داده، از درون برنامه خود به طور مثال به زبان سی شارپ یا پایتون برنامه نویسی را شروع کنید.

برای ایجاد برنامه ها شما می بایست با زبان SQL آشنایی داشته باشد. SQL زبان استاندارد کوئری نویسی (پرس و جو) برای دسترسی به داده های درون پایگاه داده رابطه ای است. البته زبان SQL محصول های متفاوت پایگاه داده رابطه ای از شرکت های متفاوت، ممکن است با یکدیگر تفاوت هایی داشته باشند، پس در اینجا اولین مشکل پیش می آید و آن اینکه اگر بخواهیم برنامه خود را که به زبان سی شارپ و برای پایگاه داده SQL Server نوشته شده بود به Oracle انتقال دهیم، چگونه باید کدهای SQL خود را ویرایش کنیم؟

حتی اگر فرض کنیم پیاده سازی زبان SQL در تمامی محصول های پایگاه داده رابطه یکسان باشد،  بازهم مشکل بزرگتری برای نوشتن برنامه به طوری که بتوانیم آنرا از یک پایگاه داده رابطه ای به پایگاه داده دیگر انتقال دهیم، وجود دارد و آن مشکل این است که پایگاه داده های رابطه ای واسط های برنامه نویسی متفاوتی را دارند که هر کدام با دیگری متفاوت است. به عبارت دیگر نام توابع و چگونگی اتصال و تعامل با پایگاه داده هدف در هر API برنامه نویسی پایگاه داده با دیگری متفاوت است و اگر بخواهیم از یک پایگاه داده به دیگری مهاجرت کنیم، باید کدهایمان را تغییر دهیم.

دوره برنامه نویسی SQL

کاربرد ORM ها برای پوشش مشکل

ORM یا Object Relational Mapping واسطه ای است که میان پایگاه داده رابطه ای هدف و زبان برنامه نویسی قرار می گرد و چگونگی دسترسی به پایگاه داده هدف را در زبان برنامه نویسی از برنامه نویس پنهان می کند به طوری که دیگر در برنامه از کدهای SQL استفاده نمی شود بلکه از شی هایی (کلاس هایی) در زبان برنامه نویسی استفاده خواهد شد. بنابراین نخستین چیزی در ORM ها باید وجود داشته باشد، شی گرا بودن زبان برنامه نویسی است. در مطلب های پیش رو به شما آموزش داده ایم که چرا شی گرایی برای ایجاد ORM لازم است.

واژه Mapper در ORM به معنی نگاشت دهنده است به این مفهوم که ORM به عنوان واسطه باید اشیا (کلاس های) زبان برنامه نویسی را به جدول ها و کوئری های پایگاه داده هدف نگاشت دهد، به طوری که چگونگی و پیچیدگی های آن از دید برنامه نویس پنهان باشد. قرار نیست با استفاده از ORM  برنامه نویس به طور مستقیم کدهای SQL را بنویسد، بلکه نیازهای خود برای دسترسی و وارد کردن داده به پایگاه داده را به زبان برنامه نویسی می نویسد و سپس ORM کدهای برنامه را به کدهای SQL لازم برای پایگاه داده هدف نگاشت می دهد. بنابراین در این حالت می توانیم  ORM را به عنوان Code Generator در نظر بگریم.

ولی ORM تنها به عنوان Code Generator نیست بلکه از آن به عنوان واسطه ای میان زبان برنامه نویسی با انواع متفاوت پایگاه داده ها استفاده می شود به طوری که مشکل مربوط به واسط های متفاوت برنامه نویسی برای پایگاه داده های متفاوت برطرف شود. به عبارت دیگر با ORM شما یکبار کد می نویسید ولی می توانید آنرا برای پایگاه داده های رابطه ای متفاوت استفاده کنید، به طوری که دیگر نیازی به تغییر دادن در کدها نیست. تنها چیزی که می ماند، نصب درایور (Driver) یا API برنامه نویسی مربوط به پایگاه داده هدف است.

درایور برای اتصال و اجرای کوئری ها و دریافت پاسخ از پایگاه داده هدف است و قاعدتا لزومی ندارد که یک ORM ویژه از تمامی پایگاه داده ها رابطه ای پشتیبانی کند. ولی به صورت معمول تمامی ORM ها از پایگاه داده های شناخته شده مانند SQL Server, Oracle, MySQL  و PostgreSQL پشتیبانی می کنند. پس با نصب ORM مشکل مهاجرت از یک پایگاه داده به دیگری در لایه برنامه نویسی بر طرف می شود، تنها چیزی که می ماند اینکه مدیران پایگاه داده باید داده ها را پایگاه داده مبدا به پایگاه داده مقصد انتقال دهند که خارج از بحث مطلب های این دوره است.

در این دوره چه چیزی یاد می گیریم

در این دوره می خواهیم با تمرکز بر روی فریم ورک Entity Framework و ASP.NET MVC چگونگی استفاده از ORM محیط Dot Net یعنی Entity Framework را برای ایجاد برنامه های داده محور با زبان سی شارپ آموزش دهیم. در شروع بر روی مفاهیم، ویژگی ها و رویکردهای Entity Framework می پردازیم و سپس آموزش های ASP.NET MVC  را شروع می کنیم و پس از چندین و چند مطلب و بر اساس نیاز مجدد ممکن است به سراغ آموزش های Entity Framework­ بازگردیم. دلیل آن این است که لازم است پیش از آموزش ASP.NET MVC با چگونگی تعامل با پایگاه داده های رابطه ای آشنا باشید، بنابراین در شروع تمرکز به صورت کامل بر روی Entity Framework است.