آموزش استفاده کردن از Dapper در ASP.NET Core Web API
آموزش استفاده کردن از Dapper در ASP.NET Core Web API یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش استفاده کردن و کار کردن باDapper در ASP.NET Core Web API است که با نام اصلی Using Dapper with ASP.NET Core Web API از شرکت Pluralsight منتشر شده است.
Dapper چیست؟ چگونه می توان Dapper را در ASP.NET MVC استفاده کرد؟
به بیان ساده تر Dapper یک Micro ORM و یا ORM بسیار کوچک است که می تواند در پروژه های توسعه داده شده توسط دات نت مورد استفاده قرار بگیرد. ابزار Dapper یک فریمورک object mapper بسیار سبک وزن است که کمک می کند تا بتوانید خروجی حاصل از انجام query ها را به domain class های موجود در پروژه، نگاشت و یا Map کنید. ابزار Dapper کارایی و یا performance بسیار بالایی را در فرایند دسترسی به داده ها و یا data access ها در اختیار برنامه نویسان قرار می دهد. اگر در پروژههای خود تمایل دارید که query ها را به صورت native بنویسید و یا از store procedure ها به جای استفاده کردن از ORM های پیچیده از قبیل Entity Framework و یا NHibernate استفاده کنید Dapper می تواند انتخاب بسیار مناسبی باشد. با استفاده کردن از Dapper ساختن و اجرا کردن query های SQL بر روی دیتابیس و سپس دریافت نتایج و map کردن آنها به domain class های موجود در پروژه بسیار ساده خواهد بود. به عنوان مثال کدی که در قسمت زیر مشاهده می کنید یک آبجکت از نوع customer را با اجرا کردن یک query بر روی یک جدول به نام customers با استفاده از Dapper ایجاد میکند.
Customer cust = _db.Query <Customer> ("select * from Customers where CustomerId=@CustomerId ", new {
CustomerId = id
}).FirstOrDefault();
برای استفاده کردن از Dapper در پروژه های توسعه داده شده با دات نت در ابتدا بایستی nuget package مربوط به Dapper را در پروژه نصب کنید. برای انجام این کار می توانید با کلیک کردن بر روی پروژه مورد نظر خود در solution explorer گزینه Nuget Package Manager را انتخاب کرده و بعد به دنبال یک پکیج با نام Dapper بگردید و آن را نصب کنید.

فریمورک Dapper که کار خود را با گسترش دادن اینترفیس IDbConnection که در یک name space با نام System.Data وجود دارد، انجام می دهد. به عبارت دیگر در این فریمورک دارای extension متدهای زیادی برای انجام عملیات data access و سپس نگاشت کردن نتایج به domain class های موجود در سی شارپ می باشد. به همین دلیل به منظور استفاده کردن از Dapper در ابتدا بایستی یک آبجکت از نوع IDbConnection را ایجاد کرده و سپس آن را با یک SqlConnection جدید راه اندازی و یا initialize کنیم، تا بتوانیم به دیتابیس متصل بشویم. در کدی که در قسمت زیر مشاهده می کنید یک IDbConnection را ایجاد کرده و سپس از آن به منظور ایجاد یک کانکشن و یا اتصال به بانک اطلاعاتی با استفاده از یک connection string که در app settings برنامه تعریف شده است استفاده نموده ایم.
public class EmployeeController : Controller
{
private IDbConnection _db = new SqlConnection(ConfigurationManager.ConnectionStrings["DBModel"].ConnectionString);
Include System.Data, System.Data.SqlClient and Dapper namespace.
چرا از Dapper در ASP.NET Core Web API استفاده کنیم؟
در پروژههای ASP.NET Core Web API، انتخاب روش مناسب برای دسترسی به دادهها میتواند بر سادگی کد، عملکرد برنامه و نحوه مدیریت پایگاه داده تأثیر بگذارد. Dapper یک Micro ORM سبک است که به توسعهدهندگان اجازه میدهد کوئریهای SQL را مستقیماً اجرا کنند و نتایج آنها را به اشیای C# نگاشت دهند. این روش برای برنامههایی مناسب است که به کنترل بیشتری روی دستورات SQL نیاز دارند و میخواهند بدون استفاده از امکانات پیچیده یک ORM بزرگ، با دادهها کار کنند.
یکی از دلایل استفاده از Dapper، نزدیک بودن نحوه کار با پایگاه داده به SQL استاندارد است. برای مثال، میتوانید اطلاعات کاربران را با یک کوئری از SQL Server دریافت کنید و نتیجه را به یک کلاس مشخص در برنامه تبدیل کنید. این رویکرد بهخصوص زمانی مفید است که توسعهدهنده بخواهد ساختار کوئریها، فیلترها و عملیات پایگاه داده را با دقت بیشتری مدیریت کند. البته انتخاب Dapper یا ابزارهای دیگر باید با توجه به نیازهای پروژه انجام شود.
پیادهسازی عملیات پایگاه داده با Dapper در Web API
هنگام ساخت یک Web API، معمولاً به عملیاتی مانند دریافت اطلاعات، ثبت رکورد جدید، ویرایش دادهها و حذف اطلاعات نیاز دارید. Dapper اجرای این عملیات را با استفاده از دستورات SQL و متدهای آماده خود ساده میکند. برای نمونه، یک endpoint میتواند شناسه محصول را دریافت کند، کوئری مناسب را اجرا کند و اطلاعات محصول را در قالب یک پاسخ JSON به کلاینت برگرداند. در این فرایند، Dapper مسئول نگاشت نتیجه کوئری به اشیای مورد استفاده در برنامه است.

در پروژههای واقعی، جدا نگه داشتن منطق دسترسی به دادهها از منطق endpointها به خوانایی و نگهداری بهتر کد کمک میکند. همچنین باید به پارامتریسازی کوئریها توجه داشته باشید تا ورودی کاربران مستقیماً به شکل ناامن در متن SQL قرار نگیرد. آشنایی با نحوه استفاده از Dapper در کنار ASP.NET Core Web API به شما کمک میکند تا ارتباط میان لایه API و پایگاه داده را با کنترل بیشتر و کد قابلفهمتری پیادهسازی کنید.
تفاوت Dapper و Entity Framework Core در پروژههای دات نت
Dapper و Entity Framework Core هر دو برای کار با دادهها در برنامههای دات نت استفاده میشوند، اما رویکرد متفاوتی دارند. Dapper بیشتر بر اجرای SQL و نگاشت نتایج تمرکز دارد، در حالی که Entity Framework Core قابلیتهایی مانند Change Tracking، نگاشت روابط میان موجودیتها و کار با دادهها از طریق LINQ را فراهم میکند. بنابراین، در پروژههایی که کنترل مستقیم بر SQL اهمیت دارد، Dapper میتواند گزینه مناسبی باشد؛ اما انتخاب نهایی به پیچیدگی مدل داده و نیازهای برنامه بستگی دارد.
برای تصمیمگیری بهتر، باید بدانید که استفاده از Dapper به معنای حذف نیاز به طراحی مناسب لایه دسترسی به دادهها نیست. شما همچنان باید مسئولیت مدیریت اتصالها، تراکنشها، خطاهای پایگاه داده و ساختار کوئریها را در نظر بگیرید. در مقابل، Entity Framework Core بخشی از این امکانات را در قالب یک چارچوب گستردهتر ارائه میدهد. شناخت تفاوت این دو ابزار به توسعهدهندگان کمک میکند تا متناسب با معماری پروژه و سطح کنترل موردنیاز، راهکار مناسبی انتخاب کنند.
این آموزش Dapper برای چه کسانی مناسب است؟
این دوره برای توسعهدهندگانی مناسب است که با مفاهیم پایه C# و ASP.NET Core آشنایی دارند و میخواهند روش دیگری برای دسترسی به دادهها در برنامههای Web API یاد بگیرند. اگر قبلاً با کوئریهای SQL کار کردهاید و قصد دارید نتایج آنها را مستقیماً به کلاسهای برنامه نگاشت کنید، یادگیری Dapper میتواند درک شما را از ارتباط میان کدهای دات نت و پایگاه داده عمیقتر کند. سطح متوسط دوره نیز آن را برای افرادی مناسب میکند که از مرحله آشنایی اولیه با توسعه وب عبور کردهاند.
همچنین اگر در پروژههای خود از ORMهایی مانند Entity Framework Core استفاده میکنید، آشنایی با Dapper میتواند گزینههای بیشتری برای طراحی لایه دسترسی به دادهها در اختیار شما قرار دهد. توسعهدهندگان Backend و افرادی که Web APIهای متصل به پایگاه داده میسازند، میتوانند از این دانش برای ارزیابی روشهای مختلف اجرای کوئریها استفاده کنند. هدف، شناخت رویکرد Dapper و درک موقعیتهایی است که استفاده از آن در یک پروژه دات نت میتواند منطقی باشد.
سرفصل مطالب آموزش ویدئویی استفاده کردن از Dapper در ASP.NET Core Web API
- مقدمهای بر Dapper
- نصب کردن Dapper
- انجام query ها با Dapper
- استفاده کردن از پارامتر ها در query های Dapper
- ایجاد کردن رکوردهای جدید با Dapper
- به روز رسانی کردن رکوردها با Dapper
- حذف کردن رکوردها با Dapper
- استفاده کردن از stored Procedure ها در Dapper
- استفاده کردن از Dapper برای انجام چندین query و لحاظ کردن mapping ها
- کار کردن با تراکنش ها در Dapper

