پرشین تم مقالات معرفی و آموزش مقدماتی EF Core

معرفی و آموزش مقدماتی EF Core

image profile پرشین تم - 13 دی 1403 - 05:45 دانلود مقاله

Entity Framework Core (EF Core) یک نگاشت شیء رابطه‌ای (ORM) قدرتمند و منبع باز برای دات نت است. EF Core توسعه دهندگان را قادر می سازد تا با استفاده از اشیاء دات نت با یک پایگاه داده کار کنند و نیازی به اکثر کدهای دسترسی به داده که توسعه دهندگان معمولا می نویسند را از بین می برد.

معرفی و آموزش مقدماتی EF Core

 

EF Core چیست؟

EF Core به توسعه دهندگان این امکان را می دهد تا با استفاده از اشیاء دات نت با پایگاه های داده به روشی شهودی تر تعامل داشته باشند. به جای نوشتن پرس و جوهای پیچیده SQL، می توانید پرس و جوهای LINQ (پرس و جوی یکپارچه زبان) را بنویسید و از قابلیت های EF Core برای ترجمه آنها به SQL استفاده کنید. این رویکرد به ساده کردن دسترسی به پایگاه داده کمک می کند و تضمین می کند که برنامه شما تمیز و قابل نگهداری باقی می ماند.

 

ویژگی های کلیدی

1. Cross-Platform: برای کار بر روی چندین پلتفرم از جمله ویندوز، لینوکس و macOS طراحی شده است.

2. سبک وزن: این یک ORM سبک، قابل توسعه و بسیار کارآمد است.

3. مدل سازی: می توانید از EF Core برای ایجاد یک مدل بر اساس طرح پایگاه داده موجود خود استفاده کنید یا یک طرح پایگاه داده جدید از کد خود ایجاد کنید.

4. مهاجرت ها: EF Core از مهاجرت ها پشتیبانی می کند، که به شما کمک می کند تغییرات طرح های پایگاه داده را در طول زمان مدیریت کنید.

5. پشتیبانی از LINQ: به طور کامل از پرس و جوهای LINQ پشتیبانی می کند، و بازیابی داده ها را بصری تر می کند.

6. استقلال ارائه دهنده: EF Core از چندین ارائه دهنده پایگاه داده، از جمله SQL Server، SQLite، PostgreSQL و MySQL پشتیبانی می کند.

 

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

EF Core با نگاشت کلاس های دات نت به جداول پایگاه داده و ویژگی های دات نت به ستون های پایگاه داده کار می کند. این نگاشت در یک کلاس DbContext تعریف شده است که یک جلسه با پایگاه داده را نشان می دهد و برای پرس و جو و ذخیره نمونه هایی از موجودیت های شما استفاده می شود.

 

گردش کار پایه

1. مدل خود را تعریف کنید: کلاس های دات نت ایجاد کنید که موجودیت های موجود در پایگاه داده شما را نشان می دهد.

2. ایجاد یک DbContext: کلاسی را تعریف کنید که از DbContext به ارث می برد و شامل ویژگی های DbSet برای هر موجودیت در مدل شما می شود.

3. Configure Your Connection String: نحوه اتصال EF Core به پایگاه داده خود را مشخص کنید.

4. انجام عملیات داده: از context برای پرس و جو، افزودن، به روز رسانی و حذف داده ها استفاده کنید.

 

مثال:

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Blogging;Trusted_Connection=True;");
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public List<Post> Posts { get; } = new List<Post>();
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

 

مفاهیم کلیدی EF Core

1. DbContext:

  • به عنوان پلی بین کلاس های موجودیت شما و پایگاه داده عمل می کند.
  • برای پرس و جو و ذخیره داده ها استفاده می شود.
  • با یک رشته اتصال برای اتصال به پایگاه داده پیکربندی شده است.

 

2. Entities:

  • مدل داده را نشان می دهد. هر موجودیت معمولاً با یک جدول در پایگاه داده مطابقت دارد.
  • یک موجودیت کلاسی است که شامل ویژگی های نگاشت شده به ستون های جدول است.

 

3. DbSet:

  • مجموعه ای از موجودیت ها را نشان می دهد. برای پرس و جو و کار با یک نوع موجودیت خاص استفاده می شود.

 

4. مهاجرت ها:

  • راهی برای هماهنگ نگه داشتن طرح واره پایگاه داده با مدل خود با اعمال تغییرات افزایشی در طرح پایگاه داده.

 

5. پرس و جوهای LINQ:

  • زبان یکپارچه پرسش (LINQ) برای بازیابی داده ها از پایگاه داده به روشی رسا و خوانا استفاده می شود.
  • به پرس و جوهایی با تایپ قوی اجازه می دهد که در زمان کامپایل بررسی شوند.

 

مثال تفصیلی

بیایید مثال خود را گسترش دهیم تا برخی از ویژگی‌های پیشرفته‌تر را شامل شود.

class Program
{
    static void Main()
    {
        using (var db = new BloggingContext())
        {
            // Create
            Console.WriteLine("Inserting a new blog");
            db.Add(new Blog { Url = "http://sample.com" });
            db.SaveChanges();

            // Read
            Console.WriteLine("Querying for a blog");
            var blog = db.Blogs
                .OrderBy(b => b.BlogId)
                .First();

            // Update
            Console.WriteLine("Updating the blog and adding a post");
            blog.Url = "https://newurl.com";

            blog.Posts.Add(
                new Post { Title = "Hello World", Content = "Welcome to EF Core!" });
            db.SaveChanges();

            // Delete
            Console.WriteLine("Delete the blog");
            db.Remove(blog);
            db.SaveChanges();
        }
    }
}

 

ویژگی های پیشرفته

1. Fluent API:

  • برای پیکربندی تنظیمات مدل EF Core استفاده می شود.
  • کنترل بیشتری بر پیکربندی مدل در مقایسه با data annotation فراهم می کند.

 

2. Data Annotations:

  • ویژگی هایی که می توانید برای پیکربندی مدل به کلاس ها و خصوصیات اعمال کنید.
  • شامل حاشیه نویسی مانند [Key]، [Required]، [MaxLength] و غیره.

 

3. ثبت و تشخیص:

  • EF Core قابلیت های گزارش را برای کمک به تشخیص مشکلات و درک عملکرد پرس و جو فراهم می کند.
  • با افزودن ارائه دهندگان گزارش (مانند کنسول، اشکال زدایی) می توانید لاگ های سیستم را پیکربندی کنید.

 

4. مدیریت همزمان:

  • EF Core از همزمانی خوشبینانه برای اطمینان از یکپارچگی داده ها در زمانی که چندین کاربر به داده های مشابه دسترسی دارند پشتیبانی می کند.
  • شما می توانید نشانه های همزمانی را برای مدیریت تضادها پیکربندی کنید.

 

5. Lazy Loading:

  • بارگیری خودکار داده های مرتبط را هنگام دسترسی به ویژگی های ناوبری فعال می کند.
  • با استفاده از بسته Microsoft.EntityFrameworkCore.Proxies می توان آن را فعال کرد.

 

مثال با Fluent API و Data Annotations

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Blogging;Trusted_Connection=True;");
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .IsRequired()
            .HasMaxLength(200);

        modelBuilder.Entity<Post>()
            .Property(p => p.Title)
            .IsRequired();
    }
}

public class Blog
{
    public int BlogId { get; set; }

    [Required]
    [MaxLength(200)]
    public string Url { get; set; }
    public List<Post> Posts { get; } = new List<Post>();
}

public class Post
{
    public int PostId { get; set; }

    [Required]
    public string Title { get; set; }
    
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}
با خرید اشتراک می توانید تا چندین برابر مبلغ خرید اشتراک خود قالب های HTML ، سورس کدهای آماده و یا مقالات دانلود کنید
شما می توانید تنها فقط با مبلغ 3,000,000 میلیون تومان وب سایت سفارسی برای خود داشته باشید
محبوب ترین مقالات
تفاوت بین CSS و SCSS چیست؟ تفاوت بین CSS و SCSS چیست؟
category برنامه نویسی 07 اسفند 1402
تفاوت بین RDBMS و DBMS تفاوت بین RDBMS و DBMS
category برنامه نویسی 02 فروردین 1403
کاوش در معماری GPT-3 کاوش در معماری GPT-3
category هوش مصنوعی 12 اسفند 1402
کلمات کلیدی در SQL کلمات کلیدی در SQL
category برنامه نویسی 01 خرداد 1403
تفاوت بین CSS، SASS و SCSS چیست؟ تفاوت بین CSS، SASS و SCSS چیست؟
category برنامه نویسی 13 اسفند 1402
انواع Join در SQL انواع Join در SQL
category برنامه نویسی 02 فروردین 1403
ChatGPT چیست؟ ChatGPT چیست؟
category هوش مصنوعی 12 اسفند 1402
آخرین مقالات
بهترین تلویزیون‌های ۲۰۲۵ بهترین تلویزیون‌های ۲۰۲۵ بهترین تلویزیون‌های سال ۲۰۲5، اوج چیزی هستند که می‌توانید در حال حاضر با این قیمت در بخش تلویزیون‌های هوشمند خریداری ک...
category فناوری 10 خرداد 1404
اینترنت اشیا چیست؟ اینترنت اشیا چیست؟ اینترنت اشیا (IoT) به شبکه‌ای از دستگاه‌های فیزیکی مجهز به حسگرها، نرم‌افزارها و سایر فناوری‌ها اشاره دارد که از طریق ...
category فناوری 08 خرداد 1404
۱۰ تا از بهترین API های تولید تصویر که ارزش بررسی دارند ۱۰ تا از بهترین API های تولید تصویر که ارزش بررسی دارند چند سال گذشته شاهد انفجاری در ابزارهای قدرتمند، خلاق و توانمند برای تعامل با تصاویر به هر روشی که بتوانید تصور کنید، ب...
category برنامه نویسی 06 خرداد 1404