مدیریت و ادغام چند Model با ViewModel در EF Core

تهران آی تی / برنامــه نویــسـی / مدیریت و ادغام چند Model با ViewModel در EF Core

مدیریت و ادغام چند Model با ViewModel در EF Core

یکی از رایج‌ترین چالش‌ها در توسعه وب، نمایش اطلاعات از چندین مدل مختلف در یک View است. در این مواقع، نیازی به ترکیب داده‌ها در مدل‌های دامین نداریم، بلکه می‌توانیم داده‌های هر مدل را به صورت مستقل در یک ViewModel قرار دهیم. این کار ضمن رعایت اصل تفکیک دغدغه‌ها، کد را خواناتر و قابل مدیریت‌تر می‌کند. در ادامه با مدیریت و ادغام چند Model با ViewModel در EF Core آشنا میشویم.

هنر طراحی ViewModel در پروژه‌های واقعی

در دنیای توسعه وب، یکی از نکات مهم و کلیدی در طراحی، نحوه نمایش و انتقال داده‌ها به لایه View است. اگرچه مدل‌های دامین (Domain Models) برای مدیریت داده‌های دیتابیس طراحی شده‌اند، اما همیشه برای نیازهای نمایش مناسب نیستند. اینجاست که ViewModel وارد صحنه می‌شود و مانند پلی میان لایه منطق و رابط کاربری عمل می‌کند.

ViewModel به ما این امکان را می‌دهد که بدون تغییر ساختار مدل‌های اصلی، داده‌ها را به شکل قابل نمایش و مناسب برای UI سازمان‌دهی کنیم.

مراحل ادغام چند Model با ViewModel

فرض کنید ما ۲ مدل به نام های AppUser و Developer داریم. و قصد داریم هر دو مدل را به یک صفحه ارسال کنیم.

  • مرحله اول : ساخت یک ViewModel

یک ویو مدل با نام ِDeveloperUserVm ایجاد میکنیم. مانند زیر.

public class DeveloperUserVm
{
public required List<AppUser> AppUsers { get; set; }
public required List<Models.Entities.Developer> Developers { get; set; }
}

  • مرحله دوم : ساخت کنترلر، اکشن و متد ها

میتوان تمام کد ها را داخل اکشن پیاده سازی کرد. ولی برای اینکه کد کثیف ننویسیم. بهتر است چند متد هم مثل زیر استفاده اضافه کنیم.

public async Task<IActionResult> Index()
{
var DeveloperUser =await CreateDeveloperUserVm();
return View(DeveloperUser);
}
private async Task<DeveloperUserViewModel> CreateDeveloperUserVm()
{
return new DeveloperUserViewModel()
{
AppUsers =await CreateAppUser(),
Developers =await CreateDeveloper(),
};
}
private async Task<List<AppUser>> CreateAppUser()
{
return await _context.appUsers.ToListAsync();
}
private async Task<List<Developer>> CreateDeveloper()
{
return await _context.developers.ToListAsync();
}

  • مرحله سوم : ساخت View

استفاده از First() در @Html.DisplayNameFor به این دلیل است که @Html.DisplayNameFor نیاز به نمونه‌ای از مدل دارد، با استفاده از First() می‌توان یک نمونه از مدل را به آن داد.

@model EFCoreTraining.Models.ViewModel.DeveloperUserViewModel
<div class="table-responsive tehranit-table">
<table class="table align-middle table-bordered table-hover">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.Developers.First().Id)</th>
<th>@Html.DisplayNameFor(model => model.Developers.First().Name)</th>
<th>@Html.DisplayNameFor(model => model.Developers.First().Family)</th>
<th>@Html.DisplayNameFor(model => model.Developers.First().Email)</th>
<th>@Html.DisplayNameFor(model => model.Developers.First().Phone)</th>
<th>@Html.DisplayNameFor(model => model.Developers.First().RegisterDate)</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Developers)
{
<tr>
<td>@item.Id</td>
<td>@item.Name</td>
<td>@item.Family</td>
<td>@item.Email</td>
<td>@item.Phone</td>
<td>@item.RegisterDate</td>
</tr>
}
</tbody>
</table>
</div>

نکات کلیدی ادغام چند Model با ViewModel

  • تفکیک داده‌ها: هر مدل به صورت مستقل در ViewModel قرار گرفته است. داده‌ها ترکیب نشده‌اند و هر کدام به صورت جداگانه مدیریت می‌شوند.
  • سادگی View: اطلاعات هر مدل به شکل تفکیک‌شده و منظم در View نمایش داده می‌شود.
  • قابلیت استفاده مجدد: اگر نیاز به تغییر یا گسترش اطلاعات هر مدل باشد، می‌توان بخش مربوطه در ViewModel را بدون تأثیر بر سایر قسمت‌ها به‌روزرسانی کرد.

این ساختار به توسعه‌دهندگان اجازه می‌دهد کدی تمیز، قابل مدیریت و قابل توسعه  تر آن هم در EF Core 9 بنویسند.

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

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

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

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

مطالب مرتبط

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

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

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

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

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

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

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

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