eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
هر دو نوع اتصالی ، یک هدف را دنبال می‌کنند: اتصال به سرور SQL Server با استفاده از EF Core. تفاوت اصلی بین آن‌ها در نحوه نگارش رشته اتصال است. در یکی از آن‌ها از دو backslash \\ و در دیگری از یک backslash و یک @ در ابتدای رشته استفاده شده است. تفاوت در نحوه نگارش: با استفاده از دو backslash: optionsBuilder.UseSqlServer("Data Source=DESKTOP-3PDBPI3\\SQLEXPRESS; Initial Catalog=StoreEf; Integrated Security=True; TrustServerCertificate=True;"); این روش با استفاده از دو backslash (\\) برای escaping درست کاراکتر backslash در رشته استفاده می‌شود. با استفاده از @ در ابتدای رشته: optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-3PDBPI3\SQLEXPRESS; Initial Catalog=StoreEf; Integrated Security=True; TrustServerCertificate=True;"); این روش از یک @ در ابتدای رشته استفاده می‌کند تا به زبان برنامه‌نویسی C# بگوید که این یک رشته‌ی verbatim است و باید به صورت دقیق و بدون escape کردن backslash‌ها پردازش شود. TrustServerCertificate=True این گزینه در رشته اتصال به SQL Server استفاده می‌شود تا به کلاینت (برنامه شما) بگوید که به گواهی SSL سرور اعتماد کند، حتی اگر این گواهی توسط یک مرجع معتبر صادر نشده باشد. کاربرد TrustServerCertificate=True مشکلات گواهی SSL: در مواردی که گواهی SSL سرور SQL Server به‌صورت خود-امضا شده (self-signed) باشد یا توسط یک مرجع معتبر صادر نشده باشد، این تنظیمات به کلاینت اجازه می‌دهد تا با نادیده گرفتن خطای گواهی، به سرور متصل شود. محیط‌های توسعه: این گزینه معمولاً در محیط‌های توسعه و تست استفاده می‌شود، جایی که ممکن است از گواهی‌های خود-امضا استفاده شود و نیازی به اعتماد به یک مرجع معتبر وجود نداشته باشد. نتیجه‌گیری هر دو رشته اتصال که استفاده کرده‌اید، عملکرد یکسانی دارند، و تفاوت اصلی در نحوه نگارش آن‌هاست. TrustServerCertificate=True به کلاینت اجازه می‌دهد تا به گواهی SSL سرور اعتماد کند، حتی اگر معتبر نباشد، که معمولاً در محیط‌های توسعه و تست مفید است. امیدوارم این توضیحات کمک‌کننده باشد.
Migration یا مهاجرت در زمینه Entity Framework Core، به فرآیندی اطلاق می‌شود که به شما کمک می‌کند تا تغییرات در مدل‌های داده‌ای خود را به پایگاه داده اعمال کنید. این تغییرات می‌توانند شامل ایجاد، تغییر و حذف جداول و ستون‌ها باشند. مهاجرت‌ها به شما امکان می‌دهند تا مدل داده‌ای و پایگاه داده خود را همگام نگه دارید و به صورت سیستماتیک تغییرات را مدیریت کنید. مفهوم Migration در Entity Framework Core، مهاجرت‌ها به شما کمک می‌کنند تا تغییرات در مدل‌های داده‌ای را بدون نیاز به نوشتن مستقیم کوئری‌های SQL مدیریت کنید. هر تغییر در مدل‌های داده‌ای به عنوان یک مهاجرت جدید ثبت می‌شود و شما می‌توانید این مهاجرت‌ها را به پایگاه داده اعمال کنید. مراحل اصلی در استفاده از Migration ایجاد Migration جدید: زمانی که تغییراتی در مدل داده‌ای خود ایجاد می‌کنید (مثلاً اضافه کردن یک کلاس یا تغییر در ویژگی‌های موجود)، باید یک مهاجرت جدید ایجاد کنید که این تغییرات را ثبت کند. این کار با استفاده از دستور Add-Migration انجام می‌شود. اعمال Migration به پایگاه داده: بعد از ایجاد مهاجرت جدید، باید این تغییرات را به پایگاه داده اعمال کنید. این کار با استفاده از دستور Update-Database انجام می‌شود. نحوه استفاده از Migration در Entity Framework Core بیایید مراحل استفاده از مهاجرت‌ها را با یک مثال بررسی کنیم. مرحله 1: ایجاد مدل داده‌ای فرض کنید یک مدل داده‌ای به نام Customer دارید: public class Customer { public int CustomerId { get; set; } public string Name { get; set; } public string Email { get; set; } } مرحله 2: ایجاد یک DbContext یک کلاس DbContext به نام DatabaseContext ایجاد کنید: using Microsoft.EntityFrameworkCore; public class DatabaseContext : DbContext { public DbSet<Customer> Customers { get; set; } } مرحله 3: ایجاد مهاجرت جدید تغییرات در مدل داده‌ای را با استفاده از دستور Add-Migration ثبت کنید: dotnet ef migrations add InitialCreate این دستور یک فایل مهاجرت جدید ایجاد می‌کند که شامل کد لازم برای ایجاد جدول Customer در پایگاه داده است. مرحله 4: اعمال مهاجرت به پایگاه داده تغییرات ثبت شده در مهاجرت را به پایگاه داده اعمال کنید: dotnet ef database update این دستور جداول جدید را ایجاد و تغییرات را به پایگاه داده اعمال می‌کند. مدیریت نسخه‌ها با Migration مهاجرت‌ها به شما امکان می‌دهند که تاریخچه تغییرات در پایگاه داده را دنبال کنید و در صورت نیاز به نسخه‌های قبلی بازگردید. هر مهاجرت شامل یک زمان‌مهر و کد منحصر به فرد است که نسخه خاصی از پایگاه داده را نشان می‌دهد. نتیجه‌گیری Migration یک ابزار قدرتمند در Entity Framework Core است که به شما کمک می‌کند تا تغییرات در مدل‌های داده‌ای و پایگاه داده را به صورت سیستماتیک و مدیریتی اعمال کنید. این ابزار به شما اجازه می‌دهد تا توسعه و نگهداری پایگاه داده‌ها را ساده‌تر کنید و از مشکلات مرتبط با تغییرات دستی جلوگیری کنید.
ایجاد دیتابیس با asp.net core mvc
پوشه Models و پوشه Cuntext و فایل DatabaseContext.cs using Microsoft.EntityFrameworkCore; using WebApplication5.Models.Entities; namespace WebApplication5.Models.Context { public class DatabaseContext : DbContext { public DatabaseContext() { } public DbSet<Customer> Customers { get; set; } public DbSet<Product> Products { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-3PDBPI3\SQLEXPRESS; Initial Catalog=StoreEf; Integrated Security=True; TrustServerCertificate=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Warranty>().HasKey(p=> p.ProductId); modelBuilder.Entity<Product>().HasOne(p=> p.Warranty).WithOne(p=> p.Product).HasForeignKey<Warranty>(p=> p.ProductId); modelBuilder.Entity<Customer>().Property(e => e.Name).HasColumnName("FullName").HasColumnType("nvarchar(50)"); } } }
بسیار خوب! بیایید کد شما را قدم به قدم توضیح دهیم: کتابخانه‌ها و namespace‌ها using Microsoft.EntityFrameworkCore; using WebApplication5.Models.Entities; namespace WebApplication5.Models.Context { Microsoft.EntityFrameworkCore: این کتابخانه اصلی برای استفاده از Entity Framework Core است که شامل کلاس‌ها و متدهای لازم برای کار با پایگاه داده‌ها می‌باشد. WebApplication5.Models.Entities: فرض می‌شود که مدل‌های داده‌ای شما، مانند Customer و Product، در این namespace قرار دارند. تعریف کلاس DbContext public class DatabaseContext : DbContext { public DatabaseContext() { } public DbSet<Customer> Customers { get; set; } public DbSet<Product> Products { get; set; } DatabaseContext: این کلاس از DbContext به ارث برده است و به عنوان کانتکست پایگاه داده شما عمل می‌کند. DbSet<Customer> Customers و DbSet<Product> Products: این ویژگی‌ها جداول Customers و Products را در پایگاه داده شما نمایندگی می‌کنند و به شما امکان دسترسی به داده‌ها را می‌دهند. پیکربندی اتصال به پایگاه داده protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-3PDBPI3\SQLEXPRESS; Initial Catalog=StoreEf; Integrated Security=True; TrustServerCertificate=True;"); } OnConfiguring: این متد برای پیکربندی گزینه‌های پایگاه داده استفاده می‌شود. optionsBuilder.UseSqlServer: تنظیمات اتصال به SQL Server را مشخص می‌کند. در اینجا، از SQL Server محلی (SQLEXPRESS) و پایگاه داده‌ای به نام StoreEf استفاده شده است. Integrated Security=True نشان می‌دهد که از اعتبارسنجی ویندوز استفاده می‌شود. TrustServerCertificate=True نیز برای اعتماد به گواهی SSL سرور استفاده شده است. پیکربندی مدل‌ها protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Warranty>().HasKey(p => p.ProductId); modelBuilder.Entity<Product>().HasOne(p => p.Warranty).WithOne(p => p.Product).HasForeignKey<Warranty>(p => p.ProductId); modelBuilder.Entity<Customer>().Property(e => e.Name).HasColumnName("FullName").HasColumnType("nvarchar(50)"); } OnModelCreating: این متد برای پیکربندی و سفارشی‌سازی مدل‌های داده‌ای استفاده می‌شود. modelBuilder.Entity<Warranty>().HasKey(p => p.ProductId): این کد مشخص می‌کند که کلید اصلی جدول Warranty، ستون ProductId است. modelBuilder.Entity<Product>().HasOne(p => p.Warranty).WithOne(p => p.Product).HasForeignKey<Warranty>(p => p.ProductId): این کد یک رابطه یک به یک بین Product و Warranty تعریف می‌کند، به طوری که Product یک Warranty دارد و Warranty یک Product. کلید خارجی در Warranty، ProductId است. modelBuilder.Entity<Customer>().Property(e => e.Name).HasColumnName("FullName").HasColumnType("nvarchar(50)"): این کد نام ستون Name در جدول Customer را به FullName تغییر می‌دهد و نوع داده آن را به nvarchar(50) تنظیم می‌کند. نتیجه‌گیری این کد، یک کانتکست پایگاه داده را با استفاده از Entity Framework Core تعریف می‌کند که شامل جداول Customer، Product، و Warranty است و تنظیمات خاصی برای ارتباطات و پیکربندی‌ها فراهم می‌کند. با این تنظیمات، شما می‌توانید به راحتی با پایگاه داده SQL Server خود ارتباط برقرار کنید و داده‌ها را مدیریت کنید.
پوشه Models و پوشه Entities و فایل Customer.cs namespace WebApplication5.Models.Entities { public class Customer { public long Id { get; set; } public string UserName { get; set; } public string Password { get; set; } public string Name { get; set; } public virtual ICollection<Order> Orders { get; set; } } }
بیایید نگاهی به این کد بیندازیم و هر بخش از آن را توضیح دهیم: Namespace و تعریف کلاس namespace WebApplication5.Models.Entities { public class Customer { namespace WebApplication5.Models.Entities: این بخش نشان می‌دهد که کلاس Customer در فضای نام WebApplication5.Models.Entities قرار دارد. فضای نام‌ها برای سازمان‌دهی و گروه‌بندی کلاس‌ها و سایر اعضای برنامه استفاده می‌شوند. public class Customer: این بخش نشان می‌دهد که یک کلاس عمومی به نام Customer تعریف شده است. کلاس‌ها به عنوان الگوهایی برای ایجاد اشیاء استفاده می‌شوند و اعضای کلاس (مانند ویژگی‌ها و متدها) را در بر می‌گیرند. ویژگی‌های کلاس public long Id { get; set; } public string UserName { get; set; } public string Password { get; set; } public string Name { get; set; } public virtual ICollection<Order> Orders { get; set; } public long Id { get; set; }: این ویژگی، یک شناسه منحصر به فرد (Id) برای هر شیء از کلاس Customer است. نوع داده آن long است و دارای خصوصیات getter و setter است. public string UserName { get; set; }: این ویژگی، نام کاربری (UserName) مشتری را نگه می‌دارد. نوع داده آن string است. public string Password { get; set; }: این ویژگی، رمز عبور (Password) مشتری را نگه می‌دارد. نوع داده آن string است. public string Name { get; set; }: این ویژگی، نام کامل (Name) مشتری را نگه می‌دارد. نوع داده آن string است. public virtual ICollection<Order> Orders { get; set; }: این ویژگی، مجموعه‌ای از سفارشات (Orders) مشتری را نگه می‌دارد. نوع داده آن ICollection<Order> است و به صورت virtual تعریف شده تا از ویژگی‌های بارگذاری تنبل (lazy loading) در Entity Framework Core پشتیبانی کند. نتیجه‌گیری این کلاس Customer نمایانگر یک مدل داده‌ای است که شامل ویژگی‌هایی برای ذخیره اطلاعات مشتری مانند شناسه، نام کاربری، رمز عبور، نام کامل و مجموعه‌ای از سفارشات است. این مدل برای استفاده در Entity Framework Core طراحی شده است و به شما امکان می‌دهد تا اطلاعات مشتری را به صورت شیءگرا در کد خود مدیریت کنید و با پایگاه داده تعامل داشته باشید.