پرشین تم مقالات معرفی و آموزش مقدماتی 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
آخرین مقالات
🎨 نظریه یا تئوری طراحی چیست؟ 🎨 نظریه یا تئوری طراحی چیست؟ نظریه طراحی چارچوب فکری است که نحوه درک، خلق و ارزیابی طراحی را هدایت می‌کند. این نظریه، فلسفه، زیبایی‌شناسی، عملکرد و...
category کامپیوتر 05 مرداد 1404
سفر من به داستان‌سرایی بصری - طراحی رابط کاربری و طراحی لوگو سفر من به داستان‌سرایی بصری - طراحی رابط کاربری و طراحی لوگو چگونه سفر خود را به سمت طراحی لوگو، گرافیک و رابط کاربری/تجربه کاربری آغاز کنید. برای موفقیت در طراحی لوگو، طراحی گراف...
category کامپیوتر 02 مرداد 1404
🧠 درک هوش مصنوعی- از مبانی تا مرزها 🧠 درک هوش مصنوعی- از مبانی تا مرزها هوش مصنوعی تقریباً هر صنعتی را تغییر شکل می‌دهد، در این مقاله با یک مرور کلی آکادمیک سطح بالا شروع کنیم و آن را به بخش...
category هوش مصنوعی 27 تیر 1404