برنامه نویسی

نحوه پیوستن به جداول حسابداری و دوره در C# EF Core

مقدمه

در این آموزش ، چگونگی پیوستن به آن را به طور مؤثر بررسی خواهیم کرد AccountingEntity وت PeriodEntity هنگام استفاده از هسته Framework Core در C#. هدف فیلتر کردن است AccountingEntity بر اساس یک Group پارامتر ضمن اطمینان از Period خاصیت به درستی از Periods جدول این یک سناریوی مشترک هنگام برخورد با جداول پایگاه داده مرتبط در یک وضعیت طرح ثابت است.

درک رابطه

ما با دو جدول کار می کنیم: periods وت accountingبشر کلید اصلی در periods جدول ترکیبی از group وت id، در حالی که accounting جدول periodid که مطابق با id در periodsبشر رابطه این جداول با تطبیق برقرار می شود accounting.periodid با periods.id، اگرچه هیچ کلید خارجی در این طرح تعریف نشده است.

تصحیح پیکربندی Framework Entity

برای تنظیم رابطه در هسته Framework Core ، ما اصلاح خواهیم کرد OnModelCreating روش در FinanceDbContextبشر پس از periodid در AccountingEntity اشاره به id در PeriodEntity، ما می توانیم این رابطه را به روش زیر تعریف کنیم:

modelBuilder.Entity()
    .HasOne(a => a.Period)
    .WithMany()
    .HasForeignKey(a => a.PeriodId) // Defines the foreign key relationship here
    .OnDelete(DeleteBehavior.Restrict); // Optional: define delete behavior

در این پیکربندی ، ما استفاده می کنیم WithMany() به جای WithOne()بشر این به این دلیل است که هر کدام PeriodEntity می تواند با چندگانه همراه باشد AccountingEntity ورودی ها ، نمایانگر یک رابطه یک به بسیاری.

اجرای روش GetAll

اکنون که روابط را به درستی تنظیم کرده ایم ، می توانیم به اجرای آن بپردازیم GetAll روش در مخزن:

public IQueryable GetAll(string group)
{
    return DatabaseContext.Accountings
        .Include(a => a.Period) // Eager loading the related Period entity
        .Where(a => a.Period.Group == group); // Filter by group
}

در این روش ، ما استفاده می کنیم Include برای انجام بارگذاری مشتاق ، اطمینان از آن Period خاصیت هر یک AccountingEntity پرجمعیت است در Where فیلتر سپس بررسی می کند که آیا Group از Period با پارامتر ورودی مطابقت دارد.

پایان

با پیکربندی صحیح روابط در هسته Framework Entity و استفاده از بارگذاری مشتاق در پرس و جو ، می توانیم به طور موثری بازیابی کنیم AccountingEntity سوابق که بر اساس مرتبط فیلتر می شوند Period ویژگی ها این رویکرد از نگه داشتن مدل های تمیز و کارآمد از سربار از ویژگی های لیست موجود در موجودات شما جلوگیری می کند.

سوالات متداول (متداول)

چگونه می توانم روابط را در هسته چارچوب Entity تنظیم کنم؟

از OnModelCreating روش تعریف کلیدهای اولیه ، روابط و محدودیت های بین موجودات. بارگذاری مشتاق می تواند با استفاده از .Include() روش

آیا می توانم از بارگیری کل اشیاء مرتبط جلوگیری کنم؟

بله ، در صورت لزوم وجود اشخاص کامل ، می توانید از طرح ریزی برای انتخاب تنها خواص خاص استفاده کنید. استفاده کردن .Select() برای ایجاد انواع ناشناس یا DTO.

اگر بخواهم روی چندین ستون فیلتر کنم چه می شود؟

شما می توانید زنجیر اضافی کنید .Where() بندها برای فیلتر کردن بر اساس سایر خصوصیات در صورت لزوم ، با استفاده از اپراتورهای منطقی برای ترکیب شرایط.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا