آموزش ساخت و پیکربندی DbContext

تهران آی تی / برنامــه نویــسـی / آموزش ساخت و پیکربندی DbContext

آموزش ساخت و پیکربندی DbContext

در این بخش از دوره پیشرفته Entity Framework Core 9 به آموزش ساخت و پیکربندی DBContext میپردازیم. ‎DbContext در Entity Framework Core یک جزء کلیدی برای دسترسی به داده‌ها و تعامل با پایگاه داده است. این کلاس به عنوان نقطه ورود اصلی برای EF Core عمل می‌کند. و مدیریت چرخه حیات داده‌ها، درخواست‌های Create, Read, Update, Delete و ارتباط با پایگاه داده را فراهم می‌کند.

DbContext چیست؟

DbContext در EF Core مانند قلب تپنده‌ای برای دسترسی به داده‌هاست. یک دروازه هوشمند که به شما اجازه می‌دهد. با پایگاه داده ارتباط برقرار کنید. داده‌ها را بخوانید، بنویسید و تغییر دهید. به‌سادگی یک کلاس. ولی قدرتمند در مدیریت چرخه حیات داده‌ها. و هماهنگ بین کد و پایگاه داده است. DbContext هسته اصلی دسترسی به داده است. که با ویژگی‌های پیشرفته و قابلیت‌های بهینه‌سازی عملکرد، یک ابزار قوی برای توسعه‌دهندگان .NET فراهم می‌کند.

وظایف اصلی DbContext

  • مدیریت اتصال به DataBase
  • ردیابی تغییرات
  • مدیریت تراکنش‌ها
  • کوئری‌سازی و اجرای دستورات
  • پیکربندی مدل‌ها و نگاشت به جداول

این وظایف، DbContext را به نقطه مرکزی ارتباط بین برنامه و پایگاه داده تبدیل می‌کند.

ساخت DbContext

DbContext یک کلاس ساده C# ای است. پس یک کلاس جدید ایجاد کرده و نام آن را میتوان هرچیزی قرار داد غیر DbContext. من نام این کلاس را MyDbContext میزارم. و باید از DbContext ارث‌بری کند.

public class MyDbContext:DbContext
{
}

پیکربندی DbContext

  • تعریف سازنده با DbContextOptions : کلاس DbContext نیاز به یک سازنده دارد که از DbContextOptions به عنوان پارامتر استفاده کند. این پارامتر برای پیکربندی کانکشن به پایگاه داده و سایر تنظیمات ضروری است.

public MyDbContext(DbContextOptions<MyDbContext> options):base(options)
{
}

  • تعریف DbSet‌ ها : توسط DbSet‌ ها به EF Core میگوییم که کدام یک از مدل های ما باید تبدیل به یک جدول در دیتابیس شود. DbSet هر جدول و عملیات CRUD مرتبط با آن را مدیریت می‌کند.

public DbSet Products { get; set; }

  • متد OnConfiguring :  این متد زمانی که DbContext ایجاد می‌شود. فراخوانی میشود. و از آن برای تنظیم گزینه‌های مرتبط با پایگاه داده استفاده می‌شود. مثل Connection String و Provider.

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}

  • متد OnModelCreating : اضافه کردن آن اختیاری است. در صورتی که نیاز به پیکربندی‌های پیشرفته‌تری برای جداول و مدل های خود دارید، می‌توانید از متد OnModelCreating استفاده کنید. این متد به شما اجازه می‌دهد. تا از Fluent API برای تنظیم ویژگی‌های مدل‌ها و نحوه نگاشت آنها به جداول پایگاه داده استفاده کنید.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}

ترتیب در DbContext

ترتیب قرارگیری متد ها در کلاس سازنده بهتر است به شکل زیر باشد

  • سازنده با DbContextOptions
  • تعریف DbSet‌ ها
  • متد OnConfiguring
  • متد OnModelCreating

استفاده از DbContext

استفاده از DbContext با Dependency Injection ساده است. می‌توانید آن را به راحتی در Program.cs پیکربندی کنید.  DbContext با Dependency Injection به‌صورت خودکار مدیریت می‌شود. استفاده از DI برای DbContext کمک می‌کند تا به جای ایجاد نمونه‌های مستقیم از DbContext، آن را به‌صورت امن و کارا در بخش‌های مختلف برنامه استفاده کنید.

// Add services to the container.
builder.Services.AddDbContext<DatabaseContextName>(c => c.UseSqlServer("YourConnectionStringHere"));

ConnectionStrings در EF Core

در اینجا چند نمونه از کانکشن استرینگ‌ها را برای استفاده در DbContext در EF Core مشاهده می‌کنید

  • کانکشن استرینگ برای اتصال با ویندوز

"Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;Trusted_Connection=True;"

در صورتی که با ارور Certificate در اتصال با ویندوز روبرو شدید. چون در حالت توسعه هستید میتوانید آن را غیر فعال کنید. ولی در سرور نباید این کار را انجام دهید. در ویندوز در بخی مواقع نمیتواند Certificate برای امن بودن در ssl را ارئه دهد.

"Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;Trusted_Connection=True;TrustServerCertificate=True;"

  • کانکشن استرینگ برای اتصال با سرور

"Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;User Id=YOUR_USERNAME;Password=YOUR_PASSWORD;"

  • همچنین برای حرفه ای تر کار کردن میتوانید به صورت زیر کانکشن استرینگ خود را در فایل appsettings.json تعریف کنید. و هر جا نیاز به کانکشن استرینگ شد. از نام آن استفاده کنید. در این مثال نام کانکشن استرینگ ما MyConnection است.

"ConnectionStrings": {
"MyConection": "Server=.;Database=titit;Trusted_Connection=True;TrustServerCertificate=True"
}

نحوه دریافت کانکشن استرینک AppSettings به صورت زیر است.

builder.Services.AddDbContext<MyDbContext>(a => a.UseSqlServer("name=ConnectionStrings:MyConection"));

خطا های رایج در DbContext

  • در صورتی که با ارور زیر مواجه شدید.

An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing without the application service provider. Error: ‘AddDbContext’ was called with configuration, but the context type ‘MyDbContext’ only declares a parameterless constructor. This means that the configuration passed to ‘AddDbContext’ will never be used. If configuration is passed to ‘AddDbContext’, then ‘MyDbContext’ should declare a constructor that accepts a DbContextOptions<MyDbContext> and must pass it to the base constructor for DbContext.

باید در DbContext حود یک سازنده با DbContextOptions تعریف کنید مثل زیر.

public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}

  • در صورتی که با ارور زیر مواجه شدید.

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 – The certificate chain was issued by an authority that is not trusted.)

اتصال با سرور برقرار است. اما هنگام فرآیند ورود، مشکل در تأیید اعتبار SSL پیش آمده. به عبارت دیگر، گواهینامه SSL که سرور استفاده می‌کند. توسط کلاینت معتبر تشخیص داده نشده. و علت آن به دلیل گواهینامه نامعتبر یا ناشناخته است. پس باید مقدار TrustServerCertificate=True را به کانکشن استرینگ خود اضافه کنید.

";Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;Trusted_Connection=True;TrustServerCertificate=True"

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد