eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
119 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
DoctorApp.zip
حجم: 25.2M
سامانه مدیریت خدمات پزشکی
پروژه ASP.Net Core MVC (وب و سی شارپ)
سامانه مدیریت خدمات پزشکی
پروژه‌ای یک سامانه مدیریت خدمات پزشکی هست که با معماری MVC در ASP.NET Core طراحی شده. این سیستم به‌صورت کامل فرآیندهای مربوط به بیماران، پزشکان، نوبت‌ها، سفارش خدمات، پرونده‌های پزشکی و گزارش‌گیری را مدیریت می‌کنه. --- ## 🧠 عملکرد کلی پروژه ### 1. مدیریت بیماران - افزودن، ویرایش، حذف و مشاهده جزئیات بیماران - اتصال هر بیمار به پرونده پزشکی و سفارش‌های خدمات ### 2. مدیریت پزشکان - ثبت پزشک جدید با تخصص مرتبط - مشاهده نوبت‌های ثبت‌شده برای هر پزشک - ارتباط با مدل تخصص‌ها (Specialty) ### 3. مدیریت خدمات پزشکی - تعریف خدمات قابل ارائه (مثل آزمایش، مشاوره، درمان) - استفاده در سفارش‌ها توسط بیماران ### 4. ثبت سفارش خدمات - هر بیمار می‌تونه یک یا چند خدمت پزشکی سفارش بده - وضعیت سفارش قابل پیگیریه (مثل "در حال بررسی", "انجام شد") ### 5. نوبت‌دهی پزشکی - ثبت نوبت ملاقات بین بیمار و پزشک - نمایش تخصص پزشک و زمان نوبت - قابل ویرایش و حذف ### 6. پرونده پزشکی - ثبت تاریخچه پزشکی برای هر بیمار - فقط یک پرونده برای هر بیمار - قابل ویرایش و مشاهده جزئیات ### 7. مدیریت تخصص‌ها - تعریف تخصص‌های پزشکی (مثل قلب، داخلی، پوست) - اتصال تخصص به پزشکان ### 8. گزارش‌گیری و داشبورد مدیریتی - نمایش آمار کلی (تعداد بیماران، پزشکان، خدمات، سفارش‌ها، نوبت‌ها) - گزارش‌های تفصیلی: - بیماران و پرونده‌هایشان - پزشکان و تخصص‌ها - نوبت‌ها با جزئیات - سفارش‌های خدمات پزشکی --- ## ✨ ویژگی‌های حرفه‌ای پروژه - طراحی تمیز با Bootstrap - استفاده از ViewBag و SelectList برای فرم‌ها - ارتباط بین موجودیت‌ها با EF Core و
Include()
- فرم‌های اعتبارسنجی و عملیات CRUD کامل - قابلیت توسعه برای نسخه‌های تحت وب، موبایل یا API
DoctorApp (2).zip
حجم: 25.3M
ویرایش پروژه سامانه مدیریت خدمات پزشکی
پروژه ASP.Net Core MVC (وب و سی شارپ)
ویرایش پروژه سامانه مدیریت خدمات پزشکی
📌 نکته مهم برای استفاده از ویو Index: اگر از حلقه‌های زیر استفاده نکنید: @foreach (var a in ViewBag.LatestAppointments as List<Appointment>) @foreach (var o in ViewBag.RecentOrders as List<Order>) ویو به‌جای استفاده از داده‌هایی که در همین اکشن مقداردهی شده‌اند، ممکنه از داده‌های عمومی یا کنترلرهای دیگر مثل AppointmentController و OrderController استفاده کنه. پس برای اینکه آخرین نوبت‌ها و سفارش‌ها دقیقاً از همین اکشن بارگذاری بشن، حتماً این حلقه‌ها رو تغییر دهید.
مدل_ها،_روابط_و_Include__رازهای_مدیریت_داده_در_ASP.mp3
زمان: حجم: 18.7M
مدلها، روابط و Include رازهای مدیریت داده در ASP.Net Core MVC ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
مدلها، روابط و Include رازهای مدیریت داده در ASP.Net Core MVC ساخته شده از هوش مصنوعی
در این قسمت از پادکست، می‌خوایم درباره‌ی یکی از مفاهیم مهم در طراحی دیتابیس و کار با Entity Framework Core در پروژه‌های ASP.NET Core MVC صحبت کنیم: مدل‌ها، ارتباط بین جدول‌ها، و استفاده از Include برای بارگذاری داده‌های مرتبط. اگه تا حالا با داده‌های مرتبط مثل کاربران و سفارش‌ها یا دسته‌بندی‌ها و محصولات کار کردی، این قسمت برایت مثل نقشه‌ی راهه. --- 🎙️ بخش اول: مدل یعنی چی؟ در ASP.NET Core MVC، Model نماینده‌ی یک جدول در دیتابیسه. هر کلاس مدل شامل خصوصیاتیه که به ستون‌های جدول تبدیل می‌شن، و می‌تونه با مدل‌های دیگه هم ارتباط داشته باشه. 🔸 مثال ساده: csharp public class Category { public int Id { get; set; } public string Name { get; set; } public ICollection<Product> Products { get; set; } } csharp public class Product { public int Id { get; set; } public string Title { get; set; } public int CategoryId { get; set; } public Category Category { get; set; } } اینجا هر محصول به یه دسته‌بندی تعلق داره—یعنی ارتباط یک‌به‌چند (One-to-Many) بین جدول‌ها. --- 🎙️ بخش دوم: انواع ارتباط بین جدول‌ها 🔗 یک به یک (One-to-One): مثلاً هر کاربر یک پروفایل دارد. 🔗 یک به چند (One-to-Many): مثلاً هر دسته‌بندی چند محصول دارد. 🔗 چند به چند (Many-to-Many): مثلاً هر دانش‌آموز در چند کلاس شرکت می‌کند و هر کلاس چند دانش‌آموز دارد. در EF Core، این ارتباط‌ها با استفاده از Navigation Properties و کلیدهای خارجی (Foreign Keys) تعریف می‌شن. --- 🎙️ بخش سوم: استفاده از Include — بارگذاری داده‌های مرتبط وقتی می‌خوای داده‌های مرتبط رو از دیتابیس بخونی، باید از Include استفاده کنی تا EF Core اون‌ها رو همراه با داده اصلی بارگذاری کنه. 🔧 مثال: csharp var categories = _context.Categories .Include(c => c.Products) .ToList(); اینجا EF Core هم دسته‌بندی‌ها رو میاره، هم لیست محصولات مربوط به هر دسته‌بندی رو. 🔸 مزایا: - کاهش تعداد کوئری‌ها - دسترسی مستقیم به داده‌های مرتبط - بهینه‌سازی عملکرد در نمایش لیست‌ها یا جزئیات --- 🎯 نتیجه‌گیری مدل‌ها پایه‌ی ارتباط با دیتابیس هستن، ارتباط بین جدول‌ها ساختار پروژه رو مشخص می‌کنه، و Include ابزار قدرتمندی برای بارگذاری داده‌های مرتبطه. اگه این سه رو خوب درک کنی، می‌تونی پروژه‌هایی بسازی که هم تمیز باشن، هم سریع، هم قابل توسعه.
پروژه ASP.Net Core MVC (وب و سی شارپ)
مدلها، روابط و Include رازهای مدیریت داده در ASP.Net Core MVC ساخته شده از هوش مصنوعی
در این قسمت از پادکست، می‌خوایم درباره‌ی یکی از موضوعات مهم در کار با Entity Framework Core در پروژه‌های ASP.NET Core MVC صحبت کنیم: زنجیر کردن Include، بارگذاری داده‌های مرتبط، کنترل حجم اطلاعات، و بهینه‌سازی خواندن داده‌ها. این موضوع برای پروژه‌هایی که داده‌های پیچیده و حجیم دارن، حیاتی و تعیین‌کننده‌ست. --- 🎙️ بخش اول: زنجیر کردن Include — بارگذاری چندلایه‌ای وقتی مدل‌هات ارتباط تو در تو دارن، مثل: - دسته‌بندی → محصول → سفارش می‌خوای همه‌ی این داده‌ها رو با یه کوئری بخونی. اینجاست که زنجیر کردن Include وارد می‌شه: csharp var categories = _context.Categories .Include(c => c.Products) .ThenInclude(p => p.Orders) .ToList(); 🔸 این یعنی: اول دسته‌بندی‌ها، بعد محصولات هر دسته، بعد سفارش‌های هر محصول—همه در یک کوئری. --- 🎙️ بخش دوم: بارگذاری از قبل (Eager Loading) وقتی مطمئنی که به داده‌های مرتبط نیاز داری، بهتره از Eager Loading استفاده کنی تا همه‌چیز هم‌زمان بارگذاری بشه. مزایا: - فقط یک کوئری اجرا می‌شه - سرعت بالا در نمایش اولیه - مناسب برای صفحات فقط خواندنی اما مراقب باش: اگه داده‌ها حجیم باشن و همه‌شون رو نخوای، باعث مصرف زیاد حافظه و کندی می‌شه. --- 🎙️ بخش سوم: بده‌بستان در بارگذاری داده‌های حجیم 🔄 همیشه باید بین دو چیز تعادل برقرار کنی: | گزینه | مزایا | معایب | |-------|--------|--------| | Eager Loading | سرعت بالا، کوئری واحد | بارگذاری داده‌های اضافی | Lazy Loading | سبک‌تر، فقط در صورت نیاز | کوئری‌های متعدد، کندی در حجم بالا | Explicit Loading | کنترل کامل | نیاز به کدنویسی بیشتر > پس اگه داده‌هات حجیمه ولی فقط گاهی بهشون نیاز داری، بهتره از Explicit Loading استفاده کنی تا فقط وقتی لازم شد، اون‌ها رو بارگذاری کنی. --- 🎙️ بخش چهارم: کنترل داده‌های فقط خواندنی وقتی داده‌ها فقط برای نمایش هستن و قرار نیست تغییر کنن، می‌تونی از AsNoTracking() استفاده کنی: csharp var products = _context.Products .AsNoTracking() .Include(p => p.Category) .ToList(); 🔸 مزایا: - کاهش مصرف حافظه - افزایش سرعت - مناسب برای صفحات گزارش، لیست‌ها، داشبوردها --- 🎯 نتیجه‌گیری زنجیر کردن Include، انتخاب نوع بارگذاری، و استفاده از AsNoTracking() ابزارهایی هستن که بهت کمک می‌کنن داده‌های مرتبط رو هوشمندانه، سریع و بهینه بارگذاری کنی—بدون اینکه پروژه‌ت سنگین یا کند بشه.
برای اینکه بتونی با EF Core و Include() داده‌های مرتبط رو بارگذاری کنی و هم‌زمان صفحه‌بندی (pagination) انجام بدی—مثلاً ۱۰ تا اول در صفحه ۱، ۱۰ تای بعدی در صفحه ۲ و...—باید از ترکیب Skip() و Take() استفاده کنی. --- 🧠 ساختار کلی صفحه‌بندی همراه با Include فرض کن می‌خوای لیست محصولات رو همراه با دسته‌بندی‌شون نمایش بدی، ۱۰ تا در هر صفحه:
csharp
int pageSize = 10;
int pageNumber = 2; // یعنی صفحه دوم

var products = _context.Products
    .AsNoTracking()
    .Include(p => p.Category) // بارگذاری دسته‌بندی مرتبط
    .Where(p => p.IsActive)   // فیلتر
    .OrderBy(p => p.Title)    // مرتب‌سازی
    .Skip((pageNumber - 1) * pageSize) // رد کردن صفحات قبلی
    .Take(pageSize)           // گرفتن تعداد مشخص
    .ToList();
--- 🔍 توضیح خط‌به‌خط: - Include(p => p.Category) → بارگذاری داده‌های مرتبط - Where(...) → فیلتر کردن داده‌ها - OrderBy(...) → مرتب‌سازی برای حفظ ترتیب - Skip(...) → رد کردن تعداد مشخص از رکوردها - Take(...) → گرفتن تعداد مشخص برای هر صفحه - AsNoTracking() → فقط خواندنی، سریع‌تر و سبک‌تر --- 📋 نکته‌های حرفه‌ای: - همیشه قبل از Skip() باید OrderBy() بزنی، چون بدون ترتیب، صفحه‌بندی معنی نداره - می‌تونی کوئری رو با ToQueryString() چاپ کنی تا SQL نهایی رو ببینی:
csharp
Console.WriteLine(productsQuery.ToQueryString());
- برای صفحه‌بندی بهتر، می‌تونی از کتابخانه‌هایی مثل X.PagedList یا Sieve هم استفاده کنی
معمولاً مقدار شماره صفحه (page number) از طریق متد GET و QueryString از سمت مرورگر یا کاربر ارسال می‌شه. یعنی وقتی کاربر روی دکمه‌ی «صفحه بعد» یا «صفحه ۳» کلیک می‌کنه، شماره صفحه به‌صورت پارامتر در URL ارسال می‌شه. --- 🧩 مثال از URL با شماره صفحه:
https://example.com/Products?page=2
🔸 اینجا page=2 یعنی کاربر درخواست داده که صفحه دوم رو ببینه. --- 🔧 دریافت مقدار صفحه در کنترلر ASP.NET Core MVC در کنترلر، می‌تونی مقدار page رو از QueryString بگیری:
csharp
public IActionResult Index(int page = 1)
{
    int pageSize = 10;
    int skipCount = (page - 1) * pageSize;

    var products = _context.Products
        .AsNoTracking()
        .Include(p => p.Category)
        .OrderBy(p => p.Title)
        .Skip(skipCount)
        .Take(pageSize)
        .ToList();

    return View(products);
}
🔹 اگر کاربر هیچ شماره صفحه‌ای نفرسته، مقدار پیش‌فرض page = 1 در نظر گرفته می‌شه. --- 📋 در View چطور لینک صفحه‌ها رو بسازی؟
html
@for (int i = 1; i <= Model.TotalPages; i++)
{
    <a href="?page=@i">@i</a>
}
🔸 این لینک‌ها باعث می‌شن شماره صفحه به‌صورت GET ارسال بشه و کنترلر اون رو دریافت کنه. --- ✅ نتیجه‌گیری - مقدار صفحه معمولاً از طریق QueryString و متد GET ارسال می‌شه - در کنترلر با پارامتر int page دریافت می‌شه - با استفاده از Skip() و Take()، داده‌های مربوط به اون صفحه بارگذاری می‌شن
LabNobat.zip
حجم: 25.2M
معرفی آموزشی پروژه EFCoreDemo یک سیستم ساده مدیریت نوبت آزمایشگاه
پروژه ASP.Net Core MVC (وب و سی شارپ)
معرفی آموزشی پروژه EFCoreDemo یک سیستم ساده مدیریت نوبت آزمایشگاه
📌 این پروژه چه کار می‌کند؟ پروژه EFCoreDemo یک سیستم نمونه برای مدیریت نوبت‌های آزمایشگاه است که با ASP.NET Core MVC و Entity Framework Core ساخته شده و امکانات زیر را دارد: 1. مدیریت نوبت‌ها (Appointments) • ثبت نوبت جدید با انتخاب بیمار و خدمت • نمایش لیست نوبت‌ها • ویرایش و حذف نوبت‌ها • نمایش جزئیات هر نوبت 2. مدیریت بیماران (Patients) • ثبت، ویرایش، حذف و مشاهده اطلاعات بیماران 3. مدیریت خدمات آزمایشگاهی (Lab Services) • ثبت، ویرایش، حذف و مشاهده خدمات 4. جستجو و فیلتر • جستجو بر اساس نام بیمار یا عنوان خدمت • فیلتر بر اساس وضعیت نوبت (ثبت‌شده، لغو شده، انجام شده) • فیلتر بر اساس تاریخ خاص 5. مرتب‌سازی هوشمند • جدیدترین یا قدیمی‌ترین • مرتب‌سازی ترکیبی نام بیمار (فارسی + انگلیسی) • مرتب‌سازی بر اساس عنوان خدمت 6. صفحه‌بندی (Paging) • نمایش داده‌ها به‌صورت صفحه‌به‌صفحه با امکان تعیین تعداد رکوردها 7. داشبورد اصلی • نمایش آمار کلی (تعداد بیماران، خدمات، نوبت‌های امروز، نوبت‌های لغو شده) • نمایش ۵ نوبت آخر با دکمه «اطلاعات بیشتر» 8. اعتبارسنجی فرم‌ها • بررسی ورودی‌ها با پیام‌های فارسی • اعتبارسنجی تاریخ و جلوگیری از ورود تاریخ نامعتبر 9. سه روش بارگذاری داده‌ها • Eager Loading برای بارگذاری همزمان داده‌های مرتبط • Lazy Loading برای بارگذاری خودکار هنگام دسترسی • Explicit Loading برای بارگذاری دستی در زمان دلخواه 🎯 این پروژه چه چیزهایی برای آموزش دارد؟ این پروژه یک منبع عالی برای یادگیری عملی مفاهیم زیر است: • معماری MVC در ASP.NET Core • Entity Framework Core و نحوه اتصال به دیتابیس • ساخت مدل‌ها و روابط (One-to-Many, Many-to-Many) • Migrations برای ایجاد و تغییر ساختار دیتابیس • عملیات CRUD کامل • LINQ برای جستجو، فیلتر و مرتب‌سازی • اعتبارسنجی سمت سرور و کلاینت • مدیریت ViewBag و ViewData برای ارسال داده به ویو • طراحی فرم‌ها و جدول‌ها با Bootstrap 5 • صفحه‌بندی و مرتب‌سازی ترکیبی • کار با تاریخ و فرمت‌بندی آن • بهینه‌سازی کوئری‌ها با انتخاب روش مناسب بارگذاری داده‌ها (Eager, Lazy, Explicit)