سرویس‌های حرفه‌ای برای روابط یک به چند در EF Core

تهران آی تی / برنامــه نویــسـی / سرویس‌های حرفه‌ای برای روابط یک به چند در EF Core

سرویس‌های حرفه‌ای برای روابط یک به چند در EF Core

در آموزش، سرویس‌های حرفه‌ای برای روابط یک به چند در EF Core یاد می‌گیریم چگونه یک Service Layer برای مدیریت روابط یک به چند ایجاد کنیم. در قسمت قبلی مدل‌های Entity را طراحی کردیم. و در این قسمت یک Service Interface و Implementation برای عملیات CRUD پیاده‌سازی خواهیم کرد. و در قسمت بعدی نحوه استفاده از این سرویس  را بررسی خواهیم کرد تا دسترسی به داده‌های مرتبط تسهیل شود.

در بسیاری از سیستم‌های مدیریت اطلاعات، نیاز به ثبت و نگهداری اطلاعات تماس کاربران یا دانشجویان وجود دارد. در این مقاله، یک سرویس مدیریت تلفن دانشجویان را که با ASP.NET Core و Entity Framework Core پیاده‌سازی شده، بررسی خواهیم کرد. این سرویس یک رابطه یک به چند (One-to-Many) را بین دانشجویان (Student) و تلفن‌های آن‌ها (Phone) مدیریت می‌کند.

ساخت اینترفیس سرویس تلفن

این اینترفیس مجموعه‌ای از متدهای مورد نیاز برای مدیریت تلفن‌های دانشجویان را تعریف می‌کند.

public interface IPhoneService
{
public Task<PhoneViewModel> GetPhoneByIdAsync(int id);
public Task<List<PhoneViewModel>> GetPhonesByStudentId(int studentId);
public Task<bool> CreatePhoneAsync(PhoneViewModel phoneVm);
public Task<int> DeletePhoneAsync(int id);
public IEnumerable<SelectListItem> GetPhoneType();
}

  • یک تلفن را بر اساس شناسه (ID) دریافت می‌کند : GetPhoneByIdAsync(int id)
  • تمام تلفن‌های مربوط به یک دانشجو را برمی‌گرداند : GetPhonesByStudentId(int studentId)
  • یک تلفن جدید را در پایگاه داده اضافه می‌کند : CreatePhoneAsync(PhoneViewModel phoneVm)
  • یک تلفن خاص را حذف می‌کند : DeletePhoneAsync(int id)

پیاده‌سازی PhoneService.cs

این کلاس، اینترفیس IPhoneService را پیاده‌سازی کرده و عملیات CRUD را مدیریت می‌کند.

  • دریافت یک تلفن بر اساس Id

/// <summary>
/// دریافت اطلاعات تلفن بر اساس شناسه
/// </summary>
/// <param name="id">شناسه تلفن</param>
/// <returns>مدل نمایشی تلفن</returns>
public async Task<PhoneViewModel> GetPhoneByIdAsync(int id)
{
var Phone = await _context.phones
.AsNoTracking()
.ProjectTo<PhoneViewModel>(_mapper.ConfigurationProvider)
.FirstOrDefaultAsync(x => x.Id == id);
if (Phone == null)
throw new KeyNotFoundException("Phone not found");
return Phone;
}

  • دریافت تمام تلفن‌های یک دانشجو

/// <summary>
/// دریافت لیست تلفن‌ها بر اساس شناسه دانشجو
/// </summary>
/// <param name="studentId">شناسه دانشجو</param>
/// <returns>لیست مدل نمایشی تلفن‌ها</returns>
public async Task<List<PhoneViewModel>> GetPhonesByStudentId(int studentId)
{
if (!await _context.students.AnyAsync(x => x.Id == studentId))
throw new KeyNotFoundException("Student not found");
var Phones = await _context.phones
.ProjectTo<PhoneViewModel>(_mapper.ConfigurationProvider)
.AsNoTracking()
.Where(x => x.StudentId == studentId)
.ToListAsync();
return Phones ?? new List<PhoneViewModel>();
}

  • اضافه کردن یک تلفن جدید

/// <summary>
/// ایجاد تلفن جدید
/// </summary>
/// <param name="phoneVm">مدل نمایشی تلفن</param>
/// <returns>وضعیت موفقیت عملیات</returns>
public async Task<bool> CreatePhoneAsync(PhoneViewModel phoneVm)
{
if (phoneVm == null || phoneVm.Id != 0)
throw new ArgumentNullException("PhoneViewModel cannot be null");
if (!await _context.students.AnyAsync(x => x.Id == phoneVm.StudentId))
throw new KeyNotFoundException("Student not found");
var Phone = _mapper.Map<Phone>(phoneVm);
_context.Add(Phone);
await _context.SaveChangesAsync();
return true;
}

  • حذف یک تلفن خاص

/// <summary>
/// حذف تلفن بر اساس شناسه
/// </summary>
/// <param name="id">شناسه تلفن</param>
/// <returns>شناسه دانشجو</returns>
public async Task<int> DeletePhoneAsync(int id)
{
var Phone = await _context.phones.FindAsync(id);
if (Phone == null)
throw new KeyNotFoundException("Phone not found");
_context.phones.Remove(Phone);
await _context.SaveChangesAsync();
return Phone.StudentId;
}

 

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

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

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

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

مطالب مرتبط

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

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

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

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

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

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

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

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