eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
121 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
برای دسترسی به فهرست کاراکترهای خاص و استفاده از آنها، شما می‌توانید از منابع مختلفی استفاده کنید. در ادامه فهرستی از منابع آنلاین برای کاراکترهای خاص و کدهای Alt آورده شده است: 1. وب‌سایت Unicode-Table https://symbl.cc Unicode-Table یک منبع عالی برای یافتن و کپی کردن کاراکترهای خاص به همراه کدهای Alt و اطلاعات بیشتر درباره هر کاراکتر. 2. وب‌سایت CopyChar https://copychar.cc CopyChar به شما اجازه می‌دهد تا به راحتی کاراکترهای خاص را جستجو کنید و آنها را کپی کنید. 3. فهرست کدهای Alt برای کاراکترهای خاص در ویندوز برای استفاده از کدهای Alt، می‌توانید از فهرست زیر استفاده کنید:
ساختار درختی پوشه و فایل Test_Store │ ├── Doc │ ├── Src │ ├── Common │ │ └── library: Test_Store.Common │ │ │ ├──── Core │ │ ├──── library: Test_Store.Application │ │ │ └── Interfaces │ │ │ └── Contexs │ │ │ └── IDataBaseCotex.cs │ │ └── library: Test_Store.Domain │ │ └── Entities │ │ └── Users │ │ ├── Role.cs │ │ ├── User.cs │ │ └── UserInRole.cs │ │ │ ├── Infrastructure │ │ ├── library: Test_Store.Infrastructure │ │ └── library: Test_Store.Persistence │ │ ├── Context │ │ │ └── DataBaseContext.cs │ │ └── Migrations │ │ ├── ......_Users.cs │ │ └── DataBaseContextModelSnapshot.cs │ │ │ └── Presentation │ └── ASP.NET Core: EndPoint.Site │ │ │ ├── Areas │ │ └── Admin │ │ ├── Controllers │ │ │ └── UsersController.cs │ │ ├── Views │ │ │ ├── Shared │ │ │ │ └── _AdminLayout.cshtml │ │ │ └── Users │ │ │ └── Index.cshtml │ │ └── Models │ ├── Controllers │ │ └── HomeController.cs │ ├── Views │ │ ├── Home │ │ │ ├── Index.cshtml │ │ │ └── Privacy.cshtml │ │ ├── Shared │ │ │ ├── _Layout.cshtml │ │ │ ├── _ValidationScriptsPartial.cshtml │ │ │ └── Error.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── Models │ │ └── ErrorViewModel.cs │ ├── wwwroot │ │ ├── AdminTemplate │ │ ├── css │ │ ├── js │ │ ├── lib │ │ ├── SiteTemplate │ │ └── favicon.ico │ └── Program.cs │ └── Test نصب کتابخانه و پروژه‌ها را به هم مرتبط کرده‌ام EndPoint.Site packages Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.SqlServer projects Test_Store.Application Test_Store.Persistence ----------------------------------- Test_Store.Persistence packages Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Relational projects Test_Store.Application Test_Store.Domain ---------------------------------------- presentation packages Microsoft.EntityFrameworkCore projects Test_Store.Domain -------------------------------------- Test_Store.Application packages Microsoft.EntityFrameworkCore projects Test_Store.Domain
IDataBaseCotex.cs استفاده از نام‌فضاها (Namespaces) csharp using Microsoft.EntityFrameworkCore; using Test_Store.Domain.Entities.Users; using Microsoft.EntityFrameworkCore;: این دستور به شما امکان می‌دهد تا از امکانات و کلاس‌های ارائه‌شده توسط Entity Framework Core استفاده کنید. using Test_Store.Domain.Entities.Users;: این دستور برای دسترسی به کلاس‌ها و موجودیت‌هایی که در نام‌فضای Test_Store.Domain.Entities.Users تعریف شده‌اند، استفاده می‌شود. تعریف اینترفیس IDataBaseContext اینترفیس IDataBaseContext وظایفی را برای تعامل با پایگاه داده تعریف می‌کند. این اینترفیس شامل متدها و پراپرتی‌های ضروری برای انجام عملیات CRUD و مدیریت تغییرات است. csharp namespace Test_Store.Application.Interfaces.Contexs { public interface IDataBaseContext { DbSet<User> Users { get; set; } DbSet<Role> Roles { get; set; } DbSet<UserInRole> UsersInRoles { get; set; } int SaveChanges(bool accaptAllChangesOnSuccess); int SaveChanges(); Task<int> SaveChangesAsync(bool accaptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken()); Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()); } } توضیحات اجزای اینترفیس DbSet<User> Users { get; set; }: یک مجموعه از موجودیت‌های User را نشان می‌دهد که از طریق اینترفیس IDataBaseContext قابل دسترسی و مدیریت هستند. DbSet<Role> Roles { get; set; }: یک مجموعه از موجودیت‌های Role را نشان می‌دهد. DbSet<UserInRole> UsersInRoles { get; set; }: یک مجموعه از موجودیت‌های UserInRole را نشان می‌دهد. int SaveChanges(bool accaptAllChangesOnSuccess);: این متد برای ذخیره تغییرات در پایگاه داده به‌صورت همزمان (synchronous) استفاده می‌شود. این متد دو پارامتر می‌پذیرد: bool acceptAllChangesOnSuccess: نشان‌دهنده اینکه آیا تمامی تغییرات باید با موفقیت اعمال شوند یا خیر. نوع بازگشتی int: تعداد رکوردهای تغییر یافته را برمی‌گرداند. int SaveChanges();: نسخه ساده‌تر متد SaveChanges بدون پارامتر. Task<int> SaveChangesAsync(bool accaptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken());: این متد برای ذخیره تغییرات به‌صورت غیر همزمان (asynchronous) استفاده می‌شود. این متد دو پارامتر می‌پذیرد: bool acceptAllChangesOnSuccess: نشان‌دهنده اینکه آیا تمامی تغییرات باید با موفقیت اعمال شوند یا خیر. CancellationToken cancellationToken: برای لغو عملیات استفاده می‌شود. نوع بازگشتی Task<int>: یک Task که تعداد رکوردهای تغییر یافته را برمی‌گرداند. Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());: نسخه ساده‌تر متد SaveChangesAsync بدون پارامتر acceptAllChangesOnSuccess. نتیجه‌گیری این کد به شما امکان می‌دهد تا تعاملات با پایگاه داده را به صورت استاندارد و قابل گسترش تعریف کنید. با استفاده از این اینترفیس می‌توانید تغییرات را ذخیره کنید و موجودیت‌ها را مدیریت کنید.
Role.cs User.cs UserInRole.cs نام‌فضا (Namespace) csharp namespace Test_Store.Domain.Entities.Users این خط، نام‌فضای (namespace) Test_Store.Domain.Entities.Users را تعریف می‌کند. این نام‌فضا برای سازماندهی کلاس‌ها و موجودیت‌های مرتبط با کاربران و نقش‌ها استفاده می‌شود. کلاس User csharp public class User { public long Id { get; set; } public string FullName { get; set; } public string Email { get; set; } public string Password { get; set; } public ICollection<UserInRole> UserInRoles { get; set; } } public long Id { get; set; }: این پراپرتی شناسه‌ی منحصربه‌فرد (ID) برای کاربر را نشان می‌دهد. public string FullName { get; set; }: این پراپرتی نام کامل کاربر را ذخیره می‌کند. public string Email { get; set; }: این پراپرتی ایمیل کاربر را ذخیره می‌کند. public string Password { get; set; }: این پراپرتی رمز عبور کاربر را ذخیره می‌کند. public ICollection<UserInRole> UserInRoles { get; set; }: این پراپرتی یک مجموعه از نقش‌هایی را که کاربر در آن‌ها قرار دارد، نگهداری می‌کند. این مجموعه ارتباط چند به چند بین کاربران و نقش‌ها را مدل می‌کند. کلاس Role csharp public class Role { public long Id { get; set; } public string Name { get; set; } public ICollection<UserInRole> UserInRoles { get; set; } } public long Id { get; set; }: این پراپرتی شناسه‌ی منحصربه‌فرد (ID) برای نقش را نشان می‌دهد. public string Name { get; set; }: این پراپرتی نام نقش را ذخیره می‌کند. public ICollection<UserInRole> UserInRoles { get; set; }: این پراپرتی یک مجموعه از کاربرانی را که در این نقش هستند، نگهداری می‌کند. این مجموعه ارتباط چند به چند بین کاربران و نقش‌ها را مدل می‌کند. کلاس UserInRole csharp public class UserInRole { public long Id { get; set; } public virtual User User { get; set; } public long UserId { get; set; } public virtual Role Role { get; set; } public long RoleId { get; set; } } public long Id { get; set; }: این پراپرتی شناسه‌ی منحصربه‌فرد (ID) برای موجودیت UserInRole را نشان می‌دهد. public virtual User User { get; set; }: این پراپرتی یک شیء از نوع User را نشان می‌دهد که به آن کاربر اشاره دارد. public long UserId { get; set; }: این پراپرتی شناسه کاربری که در این نقش قرار دارد را ذخیره می‌کند. public virtual Role Role { get; set; }: این پراپرتی یک شیء از نوع Role را نشان می‌دهد که به آن نقش اشاره دارد. public long RoleId { get; set; }: این پراپرتی شناسه نقشی که کاربر در آن قرار دارد را ذخیره می‌کند. نتیجه‌گیری این کد سه کلاس User، Role و UserInRole را تعریف می‌کند که برای مدل‌سازی کاربران و نقش‌های آن‌ها در یک سیستم استفاده می‌شوند. این کلاس‌ها به شما امکان می‌دهند تا ارتباطات بین کاربران و نقش‌ها را به خوبی مدیریت و پیاده‌سازی کنید.
DataBaseContext.cs استفاده از نام‌فضاها (Namespaces) csharp using Microsoft.EntityFrameworkCore; using Test_Store.Application.Interfaces.Contexs; using Test_Store.Domain.Entities.Users; using Microsoft.EntityFrameworkCore;: این دستور به شما امکان می‌دهد تا از امکانات و کلاس‌های ارائه‌شده توسط Entity Framework Core استفاده کنید. using Test_Store.Application.Interfaces.Contexs;: این دستور برای دسترسی به اینترفیس‌های موجود در Test_Store.Application.Interfaces.Contexs استفاده می‌شود. using Test_Store.Domain.Entities.Users;: این دستور برای دسترسی به کلاس‌ها و موجودیت‌هایی که در نام‌فضای Test_Store.Domain.Entities.Users تعریف شده‌اند، استفاده می‌شود. تعریف نام‌فضا و کلاس csharp namespace Test_Store.Persistence.Context { public class DataBaseContext : DbContext, IDataBaseContext { public DataBaseContext(DbContextOptions options) : base(options) { } public DbSet<User> Users { get; set; } public DbSet<Role> Roles { get; set; } public DbSet<UserInRole> UsersInRoles { get; set; } } } namespace Test_Store.Persistence.Context: این بخش، نام‌فضا (namespace) را تعریف می‌کند که کدهای مربوط به این کلاس در آن قرار دارند. نام‌فضاها برای سازماندهی و دسته‌بندی کدها استفاده می‌شوند. public class DataBaseContext : DbContext, IDataBaseContext: این خط کلاس DataBaseContext را تعریف می‌کند که از DbContext ارث‌بری می‌کند و اینترفیس IDataBaseContext را پیاده‌سازی می‌کند. این کلاس برای مدیریت و تعامل با پایگاه داده استفاده می‌شود. سازنده کلاس DataBaseContext csharp public DataBaseContext(DbContextOptions options) : base(options) { } public DataBaseContext(DbContextOptions options) : base(options): این سازنده کلاس DataBaseContext است که پارامتر options از نوع DbContextOptions را دریافت می‌کند و آن را به سازنده پایه (base) یعنی سازنده کلاس DbContext منتقل می‌کند. این پارامتر تنظیمات و گزینه‌های مورد نیاز برای پیکربندی دیتابیس را شامل می‌شود. پراپرتی‌های DbSet csharp public DbSet<User> Users { get; set; } public DbSet<Role> Roles { get; set; } public DbSet<UserInRole> UsersInRoles { get; set; } public DbSet<User> Users { get; set; }: این پراپرتی مجموعه‌ای از موجودیت‌های User را نشان می‌دهد که توسط Entity Framework برای تعامل با جدول کاربران در پایگاه داده استفاده می‌شود. public DbSet<Role> Roles { get; set; }: این پراپرتی مجموعه‌ای از موجودیت‌های Role را نشان می‌دهد که توسط Entity Framework برای تعامل با جدول نقش‌ها در پایگاه داده استفاده می‌شود. public DbSet<UserInRole> UsersInRoles { get; set; }: این پراپرتی مجموعه‌ای از موجودیت‌های UserInRole را نشان می‌دهد که توسط Entity Framework برای تعامل با جدول ارتباطی کاربران و نقش‌ها در پایگاه داده استفاده می‌شود. نتیجه‌گیری این کد یک کلاس DataBaseContext را تعریف می‌کند که از DbContext ارث‌بری کرده و اینترفیس IDataBaseContext را پیاده‌سازی می‌کند. این کلاس برای تعامل با پایگاه داده و مدیریت موجودیت‌های User، Role و UserInRole استفاده می‌شود. با استفاده از این کد، شما می‌توانید عملیات CRUD (ایجاد، خواندن، به‌روزرسانی و حذف) را بر روی این موجودیت‌ها انجام دهید.
Program.cs افزودن سرویس‌ها به کانتینر csharp // Add services to the container. این خط نظر (comment) است و برای توضیح اینکه بخش بعدی کد سرویس‌ها را به کانتینر DI (Dependency Injection) اضافه می‌کند، استفاده می‌شود. افزودن Scoped Service csharp builder.Services.AddScoped<IDataBaseContext, DataBaseContext>(); builder.Services.AddScoped<IDataBaseContext, DataBaseContext>();: این خط به DI Container می‌گوید که هر بار که به IDataBaseContext نیاز داریم، یک نمونه جدید از DataBaseContext ایجاد کند. "Scoped" به این معنی است که یک نمونه جدید برای هر درخواست HTTP ساخته می‌شود. تنظیمات اتصال به پایگاه داده csharp string connectionString = @"Server=.\SQLEXPRESS; Database=Test_StoreDb; Integrated Security=True; TrustServerCertificate=True;"; string connectionString = @"Server=.\SQLEXPRESS; Database=Test_StoreDb; Integrated Security=True; TrustServerCertificate=True;";: این خط یک رشته اتصال (connection string) را تعریف می‌کند که برای اتصال به پایگاه داده SQL Server استفاده می‌شود. این رشته اتصال شامل اطلاعات سرور، نام دیتابیس و تنظیمات امنیتی است. پیکربندی DbContext csharp builder.Services.AddDbContext<DataBaseContext>(options => options.UseSqlServer(connectionString)); builder.Services.AddDbContext<DataBaseContext>(options => options.UseSqlServer(connectionString));: این خط به DI Container می‌گوید که از DbContext با استفاده از تنظیمات SQL Server و رشته اتصال داده‌شده (connectionString) استفاده کند. UseSqlServer مشخص می‌کند که از SQL Server به عنوان دیتابیس استفاده شود. افزودن سرویس‌های MVC csharp builder.Services.AddControllersWithViews(); builder.Services.AddControllersWithViews();: این خط به DI Container می‌گوید که سرویس‌های MVC را با پشتیبانی از کنترلرها و نماها اضافه کند. این سرویس‌ها برای ایجاد و مدیریت درخواست‌ها و پاسخ‌ها در برنامه ASP.NET Core استفاده می‌شوند. نتیجه‌گیری این بخش از کد، سرویس‌های مورد نیاز برای تعامل با پایگاه داده و پشتیبانی از MVC را به کانتینر DI اضافه می‌کند. با این تنظیمات، برنامه شما قادر خواهد بود تا به پایگاه داده متصل شود و از کنترلرها و نماها برای مدیریت درخواست‌ها و پاسخ‌ها استفاده کند.
در packing manager console عبارت Add-Migration users و بعد Update-Database وارد کنید
Test_Store 5.zip
حجم: 42.9M
پروژه قسمت دوم Users در این بخش Common: فایل Pagination.cs پوشه Dto فایل ResultDto.cs پوشه Roles فایل UserRoles.cs و Application: پوشه های Services و Users و Commands و RegisterUser فایل IRegisterUserService.cs و پوشه های Services و Users و Queries و GetRoles فایل ها GetRolesService.cs IGetRolesService.cs RolesDto.cs و پوشه های Services و Users و Queries و GetUsers فایل ها GetUsersDto.cs GetUsersService.cs IGetUsersService.cs RequestGetUserDto.cs ReslutGetUserDto.cs اضافه شدند
ساختار درختی پوشه و فایل Test_Store │ ├── Doc │ ├── Src │ ├── Common │ │ └── library: Test_Store.Common │ │ ├── Dto │ │ │ └── ResultDto.cs │ │ ├── Roles │ │ │ └── UserRoles.cs │ │ └── Pagination.cs │ │ │ ├──── Core │ │ ├──── library: Test_Store.Application │ │ │ ├── Interfaces │ │ │ │ └── Contexs │ │ │ │ └── IDataBaseCotex.cs │ │ │ └── Services │ │ │ └── Users │ │ │ ├── Commands │ │ │ │ └── RegisterUser │ │ │ │ └── IRegisterUserService.cs │ │ │ └── Queries │ │ │ ├── GetRoles │ │ │ │ ├── GetRolesService.cs │ │ │ │ ├── IGetRolesService.cs │ │ │ │ └── RolesDto.cs │ │ │ └── GetUsers │ │ │ ├── GetUsersDto.cs │ │ │ ├── GetUsersService.cs │ │ │ ├── IGetUsersService.cs │ │ │ ├── RequestGetUserDto.cs │ │ │ └── ReslutGetUserDto.cs │ │ │ │ │ └── library: Test_Store.Domain │ │ └── Entities │ │ └── Users │ │ ├── Role.cs │ │ ├── User.cs │ │ └── UserInRole.cs │ │ │ ├── Infrastructure │ │ ├── library: Test_Store.Infrastructure │ │ └── library: Test_Store.Persistence │ │ ├── Context │ │ │ └── DataBaseContext.cs │ │ └── Migrations │ │ ├── ......_Users.cs │ │ └── DataBaseContextModelSnapshot.cs │ │ │ └── Presentation │ └── ASP.NET Core: EndPoint.Site │ │ │ ├── Areas │ │ └── Admin │ │ ├── Controllers │ │ │ └── UsersController.cs │ │ ├── Views │ │ │ ├── Shared │ │ │ │ └── _AdminLayout.cshtml │ │ │ └── Users │ │ │ ├── Create.cshtml │ │ │ └── Index.cshtml │ │ └── Models │ ├── Controllers │ │ └── HomeController.cs │ ├── Views │ │ ├── Home │ │ │ ├── Index.cshtml │ │ │ └── Privacy.cshtml │ │ ├── Shared │ │ │ ├── _Layout.cshtml │ │ │ ├── _ValidationScriptsPartial.cshtml │ │ │ └── Error.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── Models │ │ └── ErrorViewModel.cs │ ├── wwwroot │ │ ├── AdminTemplate │ │ ├── css │ │ ├── js │ │ ├── lib │ │ ├── SiteTemplate │ │ └── favicon.ico │ └── Program.cs │ └── Test
فعال کردن دکمه ثبت نام و ورود و آوردن صفحه ثبت نام