آموزش dapper - آشنایی با تکنولوژی دپر
تکنولوژی dapper، یک میکرو نگاشتگر شی-داده (ORM) در دنیای .NET است. این تکنولوژی به صورت کتابخانهای است که میتوان آن را به هر پروژهای در دات نت اضافه کرد.
ORM مخفف Object Relational Mapper به معنای نگاشتگر شی-رابطه است. در دنیای پایگاههای داده، منظور از پایگاه داده شی-رابطه، یک پایگاه داده رابطهای است که دارای امکانات شی گرایی نیز است. در واقع ORM وظیفه نگاشت بین دیتابیس یا پایگاه داده و زبانهای برنامه نویسی را بر عهده دارد. به عبارت دیگر، ORM میتواند پایگاه داده را مستقیماً روی اشیای یک زبان برنامه نویسی مانند سی شارپ نگاشت کند. ORM یک پایگاه داده مجازی را به صورت یک کلاس میسازد و متودهایی را برای کار با آن کلاسها فراهم میکند.
تکنولوژی dapper یک میکرو او آر ام است که روی وظیفه بسیار مهم کار با جداول متمرکز شده است و تمرکزی روی ساخت و دستکاری پایگاه داده ندارد. میکرو او آر امهای زیادی وجود دارند، اما از dapper به عنوان پادشاه میکرو او آر ام ها یاد میشود.
منظور از میکرو او آر ام (Micro ORM)، نگاشتگری است که اشیایی را بر اساس پرسوجوهای پایگاه داده ایجاد میکند. اگر با یک پایگاه داده رابطهای مانند اس کیو ال سرور، مای اس کیو ال یا پستگرس کیو ال کار کرده باشید، ممکن است از خود پرسیده باشید که چگونه یک مجموعه از نتایج را به یک شی که میخواهم با آن کار کنم نگاشت دهم؟ اینجا جایی است که dapper به کمک شما خواهد آمد.
در ادامه به آموزش dapper و مفاهیم پایهای آن خواهیم پرداخت.
آیا dapper یک ORM است؟
اگر بخواهیم به طور کلی صحبت کنیم، میتوانیم به پاسخ این سؤال جواب مثبت بدهیم. اما اگر بخواهیم دقیقتر صحبت کنیم، باید به این سؤال جواب منفی بدهیم!
تکنولوژی dapper در واقع جز خانواده میکرو او آر ام ها محسوب میشود. این ابزار از نظر عملکرد زیر مجموعه ORMها محسوب میشوند. در واقع میکرو او آر ام از قابلیتهای محدودتری نسبت به او آر امها برخوردار است.
ویژگی های کلیدی dapper
اگر بخواهیم به مهمترین ویژگیهای dapper اشاره کنیم، باید موارد زیر را در نظر بگیریم:
· عملکرد آن سریع است
· با استفاده از آن به نوشتن خطوط کد کمتری نیاز است
· پرسوجوهای اس کیو ال را به راحتی با استفاده از dapper میتوان مدیریت کرد
· مدیریت رویههای ذخیره شده با استفاده از dapper بسیار آسان است
· پشتیبانی از انواع مختلف پرسوجو
تکنولوژی dapper چگونه کار میکند؟
بهترین راهی که برای درک عملکرد dapper وجود دارد، این است که آن را به عنوان یک افزونه برای شی IDbConnection در نظر بگیریم. dapper چیزی نیست جز یک مجموعه از متودها برای IDbConnection.
عملکرد dapper را میتوان در سه مرحله خلاصه کرد:
· ساخت یک شی IDbConnection
· نوشتن یک پرسوجو جهت اجرای عملیاتهای ساخت، خواندن، به روزرسانی و حذف (که از این چهار عملیات با نام CRUD هم یاد میشود)
· ارسال پرسوجو به عنوان یک پارامتر در متود اجرایی
دو دستور اساسی در عملکرد دپر نقش دارند، یکی Execute یا اجرا و دیگری Query یا پرسوجو
از دستور Execute برای اجرای عملیاتهای جایگذاری، بروزرسانی و پاک کردن دادههای استفاده میشود. از دستور Query نیز برای انجام عملیات انتخاب یا Select استفاده میشود.
برای آشنایی بیشتر با نحوه عملکرد dapper، تعدادی از مفاهیم مربوط به آن را مطرح خواهیم کرد.
ADO.NET چیست؟
این تکنولوژی، برای دسترسی به دادههای در دنیای مایکروسافت دات نت استفاده میشود. ADO.NET برای ایجاد ارتباط بین سیستمهای رابطهای و غیر رابطهای از طریق مجموعهای یکسان از مؤلفهها استفاده میشود. برنامه نویسان معمولاً از ADO.NET برای دسترسی به دادههای ذخیره شده در پایگاههای داده رابطهای استفاده میکنند، اگرچه که برای دسترسی به دادههای ذخیره شده در سیستمهای غیر رابطهای نیز میتوان از ADO.NET استفاده کرد.
IDbConnection چیست؟
IDbConnection یک رابط کاربری است که به شما اجازه پیاده سازی کلاس کانکشن یا اتصال را می دهد. این کلاس نمایانگر یک ارتباط منحصر بفرد با یک منبع داده است. این رابط کاربری میتواند برای ساخت یک فراهم کننده داده استفاده شود.
یک اپلیکیشن، به صورت مستقیم نمونهای از رابط کاربری IDbConnection را ایجاد نمیکند، بلکه نمونهای از کلاسی که IDbConnection را پیاده سازی کرده، ایجاد میشود.
برای ایجاد ارتباط با یک پایگاه داده، به ایجاد اتصال با منبع داده احتیاج دارید. یک اپلیکیشن ممکن است چندین ارتباط را با هر تعداد پایگاه داده برقرار کند. هر تعداد دستوری ممکن است از یک اتصال استفاده کنند، اما در نظر داشته باشید که تنها یک دستور میتواند روی یک اتصال خاص اجرا شود.
منظور از CRUD چیست؟
کلمه CRUD، مخفف کلمات Create، Read، Update و Delete است. این چهار عملیات، عملیاتهای اصلی در ذخیره سازی محسوب میشوند.
در ادامه آموزش dapper، متودهای مربوط به آن را معرفی خواهیم کرد.
معرفی انواع متودهای dapper
تکنولوژی dapper در فضای دات نت میتواند عملکرد رابط کاربری IDbConnection را با استفاده از متودهای زیر گسترش دهد:
۱. متود Query:
این متود یک پرسوجو را اجرا کرده و نتایج آن را به اشیای پویا نگاشت میکند. به قطعه کد زیر که با سی شارپ نوشته شده است نگاه کنید:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}// conn is a SqlConnection
var queryResult = conn.Query<User>("SELECT [Id], [FirstName],[LastName] FROM dbo.[Users]");
اگر شی هدف از قبل مشخص شده باشد، مانند مثال بالا که شی هدف ما User است، عملیات نگاشت با مطابقت نام ستونهای بازگشتی با نام ویژگیهای شی انجام میشود.
۲. متود Execute:
این متود، پرسوجویی را اجرا میکند که هیچ گونه مجموعه نتایجی را بازنمیگرداند. مقدار بازگشتی این متود شامل تعداد سطرهایی است که پرسوجو بر آنها مؤثر بوده است. به قطعه کد زیر نگاه کنید:
int affectedRows = conn.Execute("UPDATE dbo.[Users] SET [FirstName] = 'John' WHERE [Id] = 3");
۳. متود ExecuteScalar:
این متود پرسوجوهایی را اجرا میکند که مجموعهای از نتایج شامل دقیقاً یک سطر و ستون را بازمیگرداند. به قطعه کد زیر نگاه کنید:
conn.ExecuteScalar<string>("SELECT [FirstName] FROM dbo.[Users] WHERE [Id] = 1")
۴. متود ExecuteReader:
این متود برای جاهایی در نظر گرفته شده است که dapper باید با DataReaderها سروکار داشته باشد. به قطعه کد زیر نگاه کنید:
var dataReader = conn.ExecuteReader("SELECT [Id], [FirstName], [LastName] FROM dbo.[Users]");
حال میخواهیم دقیقتر به نحوه عملکرد dapper بپردازیم. قطعه کد زیر را در نظر بگیرید. این قطعه کد در واقع یک کد استاندارد ADO.NET است که پیشتر درباره نقش آن در دات نت صحبت کردیم. این قطعه کد برای بازیابی داده از یک پایگاه داده و تبدیل آنها به مجموعهای از اشیا نوشته شده است:
var sql = "select * from products";
var products = new List<Product>();
using (var connection = new SqlConnection(connString))
{
connection.Open();
using (var command = new SqlCommand(sql, connection))
{
using (var reader = command.ExecuteReader())
{
var product = new Product
{
ProductId = reader.GetInt32(reader.GetOrdinal("ProductId")),
ProductName = reader.GetString(reader.GetOrdinal("ProductName")),
SupplierId = reader.GetInt32(reader.GetOrdinal("SupplierId")),
CategoryId = reader.GetInt32(reader.GetOrdinal("CategoryId")),
QuantityPerUnit = reader.GetString(reader.GetOrdinal("QuantityPerUnit")),
UnitPrice = reader.GetDecimal(reader.GetOrdinal("UnitPrice")),
UnitsInStock = reader.GetInt16(reader.GetOrdinal("UnitsInStock")),
UnitsOnOrder = reader.GetInt16(reader.GetOrdinal("UnitsOnOrder")),
ReorderLevel = reader.GetInt16(reader.GetOrdinal("ReorderLevel")),
Discontinued = reader.GetBoolean(reader.GetOrdinal("Discontinued")),
DiscontinuedDate = reader.GetDateTime(reader.GetOrdinal("DiscontinuedDate"))
};
products.Add(product);
}
}
}
در پایهای ترین حالت ممکن، دپر میتواند کد بالا را به یک خط کد زیر تبدیل کند:
products = connection.Query<Product>(sql);
پس همانطور که مشاهده کردید، استفاده از dapper با نوشتن خطوط کد کمتری همراه است. همچنین dapper در مدیریت ساخت و برقراری ارتباطات نیز در صورت ضرورت کمک کننده است.
آموزش نصب dapper
برای نصب dapper میتوانید از ابزاری که برای مدیریت بستهها یا پکیجها در نظر گرفته شده و NuGet نام دارد استفاده کنید. یک راه نصب dapper این است که در خط فرمان دات نت، دستور زیر را تایپ و اجرا کنید:
dotnet add package Dapper
یا این که میتوانید با مراجعه به کنسول مدیریت پکیجها در ویژوال استودیو، دستور زیر را تایپ و اجرا کنید:
install-package Dapper
کلام پایانی آموزش Dapper
در این مقاله به آموزش dapper و تکنولوژیهای مربوط به آن پرداخته شد. دات نت دارای تکنولوژیهای مختلفی است که تسلط بر آنها میتواند برای شما فرصتهای شغلی زیادی به دنبال داشته باشد.
اما ممکن است از خود بپرسید که بهترین منبع یادگیری دات نت دارای چه ویژگیهایی است؟ به شما توصیه میکنیم منابعی را انتخاب کنید که در عین داشتن کیفیت بالا، هزینه زیادی را به شما تحمیل نکنند. همچنین منبعی مناسب است که مهمترین مباحث را پوشش داده باشد و بتواند در مدت کوتاهی شما را به حد مناسبی از تسلط برساند.
در همین زمینه، توصیه میکنیم از ویدیوهای آنلاین برای یادگیری دات نت استفاده کنید. سایت فرادرس بهترین منبعی است که میتوانید از آن برای تهیه دورههای آموزشی دات نت با بهترین قیمت استفاده کنید.
در این سایت دورههای آموزشی مناسبی در زمینه برنامه نویسی و سایر دروس کاربردی وجود دارد.
مطلبی دیگر از این انتشارات
اهداف الگوهای طراحی
مطلبی دیگر از این انتشارات
آموزش پایتون - فصل اول (مقدمات)
مطلبی دیگر از این انتشارات
بهترین آموزشگاه تری دی مکس معماری