EF Core مخفف Entity Framework Core است، یک ORM (Object-Relational Mapper) محبوب و قدرتمند برای توسعه برنامههای کاربردی با استفاده از زبان سی شارپ. این ابزار به شما امکان میدهد تا به سادگی با پایگاههای داده رابطهای بدون نیاز به نوشتن مستقیم کد SQL کار کنید. در ادامه به زبانی ساده EF Core در سی شارپ را معرفی خواهیم کرد و اصول اولیه آن را یاد خواهیم گرفت.
EF Core در سی شارپ چیست؟
EF Core یا Entity Framework Core یک ابزار قدرتمند در زبان برنامهنویسی سی شارپ است که به شما کمک میکند تا با پایگاه دادههای رابطهای به صورت شیءگرا کار کنید. به جای نوشتن دستورات SQL پیچیده، شما میتوانید با استفاده از EF Core کلاسهایی تعریف کنید که به جداول پایگاه داده شما نگاشت میشوند. این کار باعث میشود که کار با دادهها بسیار سادهتر و قابل فهمتر شود و همچنین به شما اجازه میدهد تا از قابلیتهای پیشرفتهای مانند LINQ برای پرس و جو از دادهها استفاده کنید. در واقع، EF Core یک پل ارتباطی بین دنیای شیءگرا و دنیای پایگاه دادههای رابطهای است.
به زبان سادهتر، EF Core به شما این امکان را میدهد که با اشیاء در برنامه خود کار کنید و EF Core به صورت خودکار این اشیاء را به دادههای مربوطه در پایگاه داده تبدیل میکند.
چرا باید از EF Core در سی شارپ استفاده کنیم؟
استفاده از EF Core مزایای بسیاری دارد. اولاً، این فریمورک به شما اجازه میدهد تا با اشیاء (Objects) کار کنید، نه جداول پایگاه داده. این باعث میشود کد شما خواناتر، قابل نگهداری و توسعهپذیرتر شود. ثانیاً، EF Core از شما در مدیریت ارتباطات بین اشیاء پشتیبانی میکند. در نهایت، این ابزار به شما امکان میدهد تا با استفاده از LINQ (Language Integrated Query) به صورت ساده و قدرتمند دادهها را بازیابی و دستکاری کنید.
پیشنهاد مطالعه: آموزش Entity Framework سی شارپ – راهنمای ساده و سریع
نصب EF Core
قبل از شروع کار با EF Core در سی شارپ، باید آن را در پروژه خود نصب کنید. برای این کار میتوانید از NuGet Package Manager استفاده کنید. کافی است پکیج مورد نظر خود را جستجو و نصب کنید. همچنیین دستور نصب آن در خط فرمان محیط مد نظر به صورت زیر است:
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer
مدل سازی دادهها با EF Core
در EF Core، دادهها با استفاده از کلاسهای C# مدلسازی میشوند. هر کلاس نشان دهنده یک جدول در پایگاه داده است و خواص کلاس نشان دهنده ستونهای جدول هستند. برای مثال:
public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } }
ایجاد پایگاه داده با EF Core
EF Core میتواند به طور خودکار پایگاه داده را بر اساس مدل داده شما ایجاد کند. این فرآیند به عنوان Database First یا Code First شناخته میشود. در این مقاله، ما به روش Code First خواهیم پرداخت.
DbContext در EF Core
DbContext کلاس اصلی در EF Core است که به عنوان نقطه ورود به پایگاه داده عمل میکند. این کلاس حاوی مجموعههایی از اشیاء است که به جداول پایگاه داده نگاشت میشوند.
public class MyDbContext : DbContext { public DbSet Products { get; set; } }
عملیات CRUD با EF Core
EF Core امکان انجام عملیات CRUD (Create, Read, Update, Delete) را به سادگی فراهم میکند.
var product = new Product { Name = "Product1", Price = 10 }; context.Products.Add(product); context.SaveChanges();
var products = context.Products.ToList();
var product = context.Products.Find(1); product.Price = 20; context.SaveChanges();
var product = context.Products.Find(1); context.Products.Remove(product); context.SaveChanges();
LINQ to Entities
LINQ (Language Integrated Query) یک تکنولوژی قدرتمند برای پرس و جو از دادهها است. با استفاده از LINQ میتوانید به سادگی دادهها را فیلتر، مرتبسازی، گروهبندی و … کنید.
var expensiveProducts = context.Products.Where(p => p.Price > 100);
EF Core از انواع مختلف رابطه بین اشیاء پشتیبانی میکند، از جمله One-to-One، One-to-Many و Many-to-Many.
مهاجرتهای پایگاه داده (Migrations)
مهاجرتها به شما امکان میدهند تا تغییرات ساختاری در پایگاه داده را مدیریت کنید. EF Core میتواند به طور خودکار اسکریپتهای SQL برای ایجاد تغییرات لازم تولید کند.
پیشنهاد مطالعه: آموزش Async و Await در سی شارپ با مثالهای عملی
عملکرد EF Core
EF Core به طور کلی عملکرد خوبی دارد، اما در برخی موارد ممکن است نیاز به بهینهسازی داشته باشد. برای بهبود عملکرد، میتوانید از تکنیکهایی مانند Eager Loading، Lazy Loading، Include و Projection استفاده کنید.
مثال عملی EF Core در سی شارپ: ساخت یک وبلاگ ساده
برای ارائه نوعی نمونه عملی بیایید یک وبلاگ ساده با استفاده از EF Core بسازیم. این وبلاگ دارای دو مدل (Entity) خواهد بود: Blog و Post. هر بلاگ دارای چندین پست خواهد بود.
- نصب NuGet Packages
ابتدا، پروژه ASP.NET Core خود را ایجاد کرده و پکیجهای مورد نیاز EF Core را از طریق NuGet Package Manager نصب کنید:
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer
- تعریف مدلها (Entities)
public class Blog { public int Id { get; set; } public string Name { get; set; } public List Posts { get; set; } } public class Post { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } }
- تعریف DbContext
public class BlogDbContext : DbContext { public BlogDbContext(DbContextOptions options) : base(options) { } public DbSet Blogs { get; set; } public DbSet Posts { get; set; } }
- پیکربندی DbContext در Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); }
- ایجاد و اعمال مهاجرتها
Add-Migration InitialCreate Update-Database
- انجام عملیات CRUD
using var context = new BlogDbContext(_contextOptions); // Create a new blog var blog = new Blog { Name = "My First Blog" }; context.Blogs.Add(blog); context.SaveChanges(); // Create a new post var post = new Post { Title = "My First Post", Content = "Hello, World!", Blog = blog }; context.Posts.Add(post); context.SaveChanges(); // Retrieve all posts for a specific blog var posts = context.Posts.Where(p => p.Blog.Name == "My First Blog").ToList();
توضیح:
- مدلها: Blog و Post دو کلاس هستند که هر کدام ویژگیهای مربوط به خود را دارند. رابطه بین آنها از نوع یک به چند است (یک بلاگ میتواند چندین پست داشته باشد).
- DbContext: کلاس BlogDbContext از کلاس DbContext ارثبری کرده و به عنوان نقطه ورود به پایگاه داده عمل میکند.
- مهاجرتها: با استفاده از دستورهای Add-Migration و Update-Database، ساختار پایگاه داده مطابق با مدلهای ما ایجاد میشود.
- عملیات CRUD: مثالهایی از ایجاد، خواندن، بهروزرسانی و حذف دادهها را نشان میدهد.
نکات مهم در مورد EF Core در سی شارپ:
- رابطهها: EF Core به طور خودکار رابطه بین Blog و Post را تشخیص میدهد و جدول مربوطه را در پایگاه داده ایجاد میکند.
- Lazy Loading: به طور پیشفرض، EF Core از Lazy Loading استفاده میکند، به این معنی که اشیاء مرتبط تنها زمانی بارگذاری میشوند که به آنها نیاز باشد.
- Eager Loading: برای بارگذاری تمام اشیاء مرتبط به طور همزمان، میتوانید از روشهای مانند Include استفاده کنید.
- LINQ: برای پرس و جو از دادهها، میتوانید از LINQ to Entities استفاده کنید.
این مثال ساده نشان میدهد که چگونه میتوان با استفاده از EF Core به سرعت و به سادگی یک برنامه کاربردی با دسترسی به پایگاه داده ایجاد کرد.
توجه: این مثال تنها یک نمونه ساده است و EF Core قابلیتهای بسیار بیشتری را ارائه میدهد. برای اطلاعات بیشتر، میتوانید به مستندات رسمی EF Core مراجعه کنید.
سوالات متداول در مورد ایف کور در سی شارپ
برای درک بهتر کار EF Core در سی شارپ توجه به سوالات متداول زیر خالی از لطف نیست:
- تفاوت بین EF Core و Entity Framework چیست؟ EF Core نسخه سبکتر و قابل حملتر Entity Framework است.
- چگونه میتوان از EF Core برای کار با پایگاه دادههای مختلف استفاده کرد؟ EF Core از پایگاه دادههای مختلفی مانند SQL Server، SQLite، PostgreSQL و غیره پشتیبانی میکند.
- آیا EF Core از ذخیره دادهها در حافظه پشتیبانی میکند؟ بله، EF Core از این قابلیت پشتیبانی میکند.
- چگونه میتوان عملکرد EF Core را بهبود بخشید؟ با استفاده از تکنیکهای مانند Eager Loading، Lazy Loading، Include و Projection میتوانید عملکرد EF Core را بهبود بخشید.
- آیا EF Core از الگوهای طراحی مانند Repository Pattern پشتیبانی میکند؟ بله، EF Core با الگوهای طراحی مختلف سازگار است.
کلام پایانی
EF Core در سی شارپ یک ابزار قدرتمند و ضروری برای توسعه برنامههای کاربردی مبتنی بر پایگاه داده است. با یادگیری EF Core، میتوانید به سرعت و کارآمدی برنامههای خود را توسعه دهید.
آیا شما هم میخواهید به یک برنامهنویس سی شارپ حرفهای تبدیل شوید؟ دورههای آموزش سی شارپ و آموزش برنامه نویسی مکتب خونه، با تمرکز بر مباحث کاربردی و پروژه محور، بهترین انتخاب برای شماست. با یادگیری سی شارپ، درهای بسیاری به روی شما باز خواهد شد. برای ثبتنام و کسب اطلاعات بیشتر، همین حالا اقدام کنید.
منبع