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
مشاهده در ایتا
دانلود
در بانک اطلاعاتی رابطه‌ای، جداول مرتبط به یکدیگر با استفاده از کلیدهای خارجی (Foreign Keys) به هم وصل می‌شوند. این روابط کمک می‌کنند تا یکپارچگی داده‌ها حفظ شود و از انحراف یا آسیب به داده‌ها جلوگیری شود. به همین دلیل، حذف جداولی که با سایر جداول ارتباط دارند می‌تواند مشکلاتی ایجاد کند. در اینجا چند دلیل اصلی آورده شده است: 1. حفظ یکپارچگی مرجع (Referential Integrity) کلیدهای خارجی به منظور حفظ یکپارچگی مرجع طراحی شده‌اند. این ویژگی اطمینان می‌دهد که هر مقدار در ستون کلید خارجی، به یک مقدار معتبر در ستون کلید اصلی جدول دیگر ارجاع داده می‌شود. حذف جدول اصلی می‌تواند منجر به مراجع ناقص یا نادرست شود. 2. جلوگیری از داده‌های یتیم (Orphaned Data) زمانی که یک جدول که با سایر جداول ارتباط دارد حذف می‌شود، ممکن است رکوردهایی در جدول‌های دیگر باقی بمانند که به رکوردهای حذف شده ارجاع داده‌اند. این رکوردها به عنوان داده‌های یتیم شناخته می‌شوند و می‌توانند منجر به مشکلات جدی در تحلیل داده‌ها و یکپارچگی سیستم شوند. 3. جلوگیری از خطاهای منطقی و خرابی‌ها حذف جداول مرتبط می‌تواند منجر به خطاهای منطقی و خرابی‌های برنامه شود. این خطاها می‌توانند به دلیل دسترسی به داده‌های حذف شده یا تلاش برای پیاده‌سازی تراکنش‌های ناقص رخ دهند. روش‌های مدیریت حذف جداول مرتبط برای مدیریت حذف جداول مرتبط، چندین راه‌حل وجود دارد: استفاده از محدودیت‌های ON DELETE CASCADE: این گزینه به شما امکان می‌دهد که هنگامی که یک رکورد در جدول اصلی حذف می‌شود، تمام رکوردهای مرتبط در جدول‌های فرزند نیز به صورت خودکار حذف شوند. CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE ); استفاده از محدودیت‌های ON DELETE SET NULL: این گزینه به شما امکان می‌دهد که وقتی یک رکورد در جدول اصلی حذف می‌شود، کلیدهای خارجی مرتبط در جدول فرزند به NULL تغییر یابند. CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE SET NULL ); مدیریت دستی حذف: پیش از حذف یک جدول، ابتدا باید رکوردهای مرتبط در سایر جداول را به صورت دستی حذف یا به‌روزرسانی کنید تا اطمینان حاصل شود که هیچ داده یتیمی باقی نمی‌ماند. نتیجه‌گیری حذف جداول مرتبط در بانک‌های اطلاعاتی رابطه‌ای می‌تواند منجر به مشکلات جدی در یکپارچگی و انسجام داده‌ها شود. با استفاده از ویژگی‌های کلیدهای خارجی و استراتژی‌های مدیریتی مناسب، می‌توانید از ایجاد این مشکلات جلوگیری کنید و داده‌های خود را به صورت منظم و ایمن مدیریت کنید.
در SQL Server، عملیات حذف، به‌روزرسانی و اضافه کردن سطرها در جداولی که با یکدیگر ارتباط دارند، نیاز به دقت و توجه خاصی دارند تا یکپارچگی داده‌ها حفظ شود و مشکلاتی مانند داده‌های یتیم و خطاهای مرجعیتی پیش نیاید. بیایید به هر کدام از این عملیات‌ها و نکات مرتبط با آن‌ها بپردازیم: حذف سطر (DELETE) نکات: حفظ یکپارچگی مرجع: هنگام حذف یک رکورد که به دیگر جداول مرتبط است، باید مطمئن شوید که این کار منجر به رکوردهای یتیم در جداول مرتبط نشود. استفاده از محدودیت‌های ON DELETE CASCADE: اگر می‌خواهید وقتی یک رکورد در جدول اصلی حذف می‌شود، تمام رکوردهای مرتبط در جداول دیگر نیز حذف شوند، می‌توانید از این محدودیت استفاده کنید. مثال: CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE ); -- حذف یک رکورد DELETE FROM Customers WHERE CustomerID = 1; در این مثال، با حذف رکوردی از جدول Customers، رکوردهای مرتبط در جدول Orders نیز حذف می‌شوند. به‌روزرسانی سطر (UPDATE) نکات: حفظ یکپارچگی مرجع: هنگام به‌روزرسانی یک کلید اصلی یا کلید خارجی، باید مطمئن شوید که تمام روابط مرجعیتی به‌درستی به‌روز شوند. استفاده از محدودیت‌های ON UPDATE CASCADE: این محدودیت به شما امکان می‌دهد تا در صورت به‌روزرسانی یک رکورد در جدول اصلی، رکوردهای مرتبط در جداول دیگر به‌طور خودکار به‌روز شوند. مثال: CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON UPDATE CASCADE ); -- به‌روزرسانی یک رکورد UPDATE Customers SET CustomerID = 2 WHERE CustomerID = 1; در این مثال، با به‌روزرسانی CustomerID در جدول Customers، CustomerID در جدول Orders نیز به‌روز می‌شود. اضافه کردن سطر (INSERT) نکات: رعایت یکپارچگی مرجع: هنگام اضافه کردن رکوردهای جدید به جداولی که روابط مرجعیتی دارند، مطمئن شوید که تمام کلیدهای خارجی معتبر باشند و به رکوردهای موجود در جداول مرجع ارجاع دهند. مثال: -- اضافه کردن یک رکورد جدید در جدول Customers INSERT INTO Customers (CustomerID, CustomerName, Email) VALUES (1, 'John Doe', 'john@example.com'); -- اضافه کردن یک رکورد جدید در جدول Orders که به Customers ارجاع می‌دهد INSERT INTO Orders (OrderID, CustomerID, OrderDate) VALUES (1, 1, '2024-11-22'); در این مثال، ابتدا یک رکورد در جدول Customers اضافه می‌شود و سپس یک رکورد در جدول Orders که به رکورد مشتری در جدول Customers ارجاع می‌دهد. مدیریت یکپارچگی داده‌ها برای حفظ یکپارچگی داده‌ها هنگام انجام عملیات حذف، به‌روزرسانی و اضافه کردن سطرها، می‌توانید از محدودیت‌های مرجعیتی مانند ON DELETE CASCADE و ON UPDATE CASCADE استفاده کنید و همچنین مراقب باشید که همه کلیدهای خارجی به درستی تنظیم شده باشند. نتیجه‌گیری عملیات حذف، به‌روزرسانی و اضافه کردن سطرها در جداولی که با یکدیگر ارتباط دارند نیاز به دقت و توجه ویژه دارد تا یکپارچگی داده‌ها حفظ شود و مشکلاتی مانند داده‌های یتیم و خطاهای مرجعیتی پیش نیاید. با استفاده از محدودیت‌های مرجعیتی مناسب و مدیریت صحیح کلیدهای خارجی، می‌توانید داده‌ها را به صورت امن و مؤثر مدیریت کنید.
در SQL Server، Generate Script یک ویژگی قدرتمند است که به شما امکان می‌دهد تا اسکریپت‌های SQL را برای اجزای مختلف بانک اطلاعاتی مانند جداول، دیدها، ذخیره شده‌ها (Stored Procedures) و غیره ایجاد کنید. این اسکریپت‌ها می‌توانند برای ایجاد، به‌روزرسانی یا حذف اجزای بانک اطلاعاتی استفاده شوند. کاربردها: - مهاجرت داده‌ها و ساختار: انتقال بانک اطلاعاتی از یک سرور به سرور دیگر. ایجاد نسخه پشتیبان از ساختار بانک اطلاعاتی. - مستندسازی و بررسی: ایجاد مستندات از ساختار بانک اطلاعاتی. بررسی تغییرات اعمال شده در ساختار بانک اطلاعاتی. - پیاده‌سازی تغییرات: ایجاد و اعمال تغییرات در جداول، ایندکس‌ها، و سایر اجزای بانک اطلاعاتی. به‌روزرسانی ساختار بانک اطلاعاتی بدون نیاز به انجام تغییرات دستی. نحوه استفاده از Generate Script در SQL Server Management Studio (SSMS): - باز کردن SQL Server Management Studio (SSMS): SQL Server Management Studio را باز کنید و به سرور بانک اطلاعاتی خود متصل شوید. - انتخاب بانک اطلاعاتی: در پنجره Object Explorer، بانک اطلاعاتی مورد نظر خود را انتخاب کنید. - ایجاد اسکریپت برای اجزای بانک اطلاعاتی: روی بانک اطلاعاتی یا هر جزء دیگر (مانند جدول) راست‌کلیک کنید. گزینه "Tasks" را انتخاب کرده و سپس "Generate Scripts..." را انتخاب کنید. - پیکربندی اسکریپت‌ها: جادوگر (Wizard) باز می‌شود که به شما امکان می‌دهد تا اجزای بانک اطلاعاتی و تنظیمات مورد نظر خود را انتخاب کنید. می‌توانید تعیین کنید که آیا اسکریپت فقط ساختار (Schema) را شامل شود یا داده‌ها (Data) را نیز. - تولید و ذخیره اسکریپت: پس از تنظیمات، روی "Next" کلیک کنید تا اسکریپت تولید شود. اسکریپت می‌تواند در یک فایل ذخیره شود، در پنجره ویرایشگر SQL نمایش داده شود، یا به کلیپ بورد کپی شود. مثال: فرض کنید می‌خواهید اسکریپت ایجاد یک جدول به نام Customers را تولید کنید: CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, CustomerName NVARCHAR(100), Email NVARCHAR(100) ); نتیجه‌گیری: Generate Script یک ابزار مفید و قدرتمند در SQL Server Management Studio است که به شما امکان می‌دهد تا اسکریپت‌های SQL را برای اجزای مختلف بانک اطلاعاتی ایجاد کنید. این ابزار به ویژه برای مهاجرت داده‌ها، مستندسازی ساختار بانک اطلاعاتی و پیاده‌سازی تغییرات بسیار مفید است.
در SQL Server، پشتیبان‌گیری (Backup) و Generate Script دو فرآیند مهم برای مدیریت و نگهداری بانک اطلاعاتی هستند. این دو روش اهداف و کاربردهای متفاوتی دارند، بنابراین بیایید به تفاوت‌های آن‌ها بپردازیم: پشتیبان‌گیری (Backup) پشتیبان‌گیری فرآیندی است که یک کپی کامل از بانک اطلاعاتی یا بخشی از آن (مانند جداول، فایل‌های لاگ، و غیره) را در یک فایل جداگانه ذخیره می‌کند. این فایل پشتیبان می‌تواند برای بازیابی داده‌ها در صورت خرابی سیستم، از دست دادن داده‌ها یا نیاز به انتقال داده‌ها به یک سرور دیگر استفاده شود. ویژگی‌ها و کاربردها: - حفظ داده‌ها: پشتیبان‌گیری تضمین می‌کند که در صورت بروز مشکلاتی مانند خرابی دیسک، قطع برق، یا خطاهای نرم‌افزاری، داده‌ها قابل بازیابی هستند. - انتقال داده‌ها: فایل‌های پشتیبان می‌توانند برای انتقال بانک اطلاعاتی به سرورهای دیگر استفاده شوند. - بازیابی بانک اطلاعاتی: امکان بازگردانی کامل یا جزئی بانک اطلاعاتی از فایل پشتیبان در صورت نیاز. ایجاد پشتیبان: -- ایجاد پشتیبان کامل BACKUP DATABASE YourDatabase TO DISK = 'C:\Backup\YourDatabase.bak'; Generate Script Generate Script فرآیندی است که کدهای SQL را برای ایجاد، به‌روزرسانی یا حذف اجزای مختلف بانک اطلاعاتی تولید می‌کند. این اسکریپت‌ها می‌توانند شامل دستورات برای ایجاد جداول، ایندکس‌ها، دیدها، ذخیره شده‌ها، و غیره باشند. ویژگی‌ها و کاربردها: - مستندسازی: ایجاد مستندات دقیق از ساختار بانک اطلاعاتی و اجزای آن. - انتقال ساختار بانک اطلاعاتی: انتقال ساختار بانک اطلاعاتی به سرورهای دیگر بدون داده‌ها. - پیاده‌سازی تغییرات: اعمال تغییرات در ساختار بانک اطلاعاتی به‌صورت خودکار با استفاده از اسکریپت‌ها. ایجاد اسکریپت: در SQL Server Management Studio (SSMS): - روی بانک اطلاعاتی یا جزء مورد نظر راست‌کلیک کنید. - گزینه "Tasks" را انتخاب کرده و "Generate Scripts..." را انتخاب کنید. - تنظیمات مورد نظر را پیکربندی کرده و اسکریپت را تولید کنید. تفاوت‌های کلیدی: 1- حفظ داده‌ها: - پشتیبان‌گیری: شامل داده‌ها و ساختار بانک اطلاعاتی است و امکان بازگردانی کامل بانک اطلاعاتی را فراهم می‌کند. - Generate Script: فقط شامل ساختار بانک اطلاعاتی است و داده‌ها را شامل نمی‌شود (مگر اینکه به‌صورت خاص تنظیم شود). 2- هدف: - پشتیبان‌گیری: برای بازیابی داده‌ها در صورت بروز مشکلات و حفظ نسخه‌های پشتیبان استفاده می‌شود. - Generate Script: برای انتقال یا مستندسازی ساختار بانک اطلاعاتی و اعمال تغییرات ساختاری استفاده می‌شود. 3- فرآیند بازیابی: - پشتیبان‌گیری: بازگردانی داده‌ها با استفاده از دستورات RESTORE انجام می‌شود. - Generate Script: بازگردانی ساختار بانک اطلاعاتی با اجرای اسکریپت‌ها انجام می‌شود. نتیجه‌گیری در حالی که هر دو فرآیند پشتیبان‌گیری و Generate Script برای مدیریت و نگهداری بانک اطلاعاتی ضروری هستند، کاربردها و اهداف متفاوتی دارند. پشتیبان‌گیری بیشتر برای حفظ و بازیابی داده‌ها استفاده می‌شود، در حالی که Generate Script برای مستندسازی و انتقال ساختار بانک اطلاعاتی به کار می‌رود.
بیایید هر کدام از این مفاهیم و تکنولوژی‌ها را به طور جداگانه بررسی کنیم و تفاوت‌های آن‌ها را توضیح دهیم: 1. ORM (Object-Relational Mapping) ORM یا Object-Relational Mapping یک تکنولوژی است که به برنامه‌نویسان اجازه می‌دهد تا داده‌های پایگاه داده رابطه‌ای را به صورت اشیاء برنامه‌نویسی شده مدیریت کنند. به بیان دیگر، ORM رابطه بین جداول پایگاه داده و کلاس‌های برنامه‌نویسی را برقرار می‌کند تا برنامه‌نویسان بتوانند با استفاده از اشیاء، عملیات CRUD (ایجاد، خواندن، به‌روزرسانی، حذف) را انجام دهند. 2. Entity Framework (EF) Entity Framework یک ORM متن‌باز توسعه داده شده توسط مایکروسافت برای .NET است که به شما اجازه می‌دهد با پایگاه داده‌های رابطه‌ای با استفاده از مدل‌های شیءگرا کار کنید. EF به شما این امکان را می‌دهد که به جای نوشتن مستقیم کوئری‌های SQL، با استفاده از زبان برنامه‌نویسی (مانند C#) به داده‌ها دسترسی پیدا کنید و عملیات مورد نیاز را انجام دهید. ویژگی‌ها: پشتیبانی از مدل‌سازی داده‌های پیچیده. امکان انجام پرس و جوهای پیچیده با استفاده از LINQ. پشتیبانی از چندین پایگاه داده مختلف. کاهش نیاز به نوشتن کوئری‌های دستی SQL. 3. EF Core EF Core نسخه‌ای به‌روزشده و سبکتر از Entity Framework است که برای کار با .NET Core طراحی شده است. EF Core از ویژگی‌های بهتری نسبت به نسخه کلاسیک EF برخوردار است و قابلیت پشتیبانی از پلتفرم‌های مختلف (چندسکویی) را دارا می‌باشد. ویژگی‌ها: سبکتر و سریع‌تر نسبت به EF کلاسیک. پشتیبانی از پلتفرم‌های مختلف و چندسکویی. قابلیت‌های بهبود یافته برای مدل‌سازی و پرس و جو. 4. ADO.NET ADO.NET یک فناوری قدیمی‌تر است که توسط مایکروسافت برای دسترسی به داده‌ها و تعامل با پایگاه داده‌های رابطه‌ای توسعه داده شده است. ADO.NETبیشتر به برنامه‌نویسان امکان می‌دهد تا به صورت مستقیم با پایگاه داده‌ها از طریق دستورات SQL و دیتاست‌ها (DataSets) تعامل کنند. ویژگی‌ها: دسترسی مستقیم و سریع به پایگاه داده. مدیریت اتصالات پایگاه داده. استفاده از دستورات SQL برای انجام عملیات بر روی داده‌ها. مناسب برای برنامه‌های که نیاز به کارایی بالا دارند. 5. Dapper Dapper یک ORM سبک و سریع است که به عنوان یک افزونه برای ADO.NETطراحی شده است. Dapper تمرکز بیشتری بر روی عملکرد و کارایی دارد و به برنامه‌نویسان اجازه می‌دهد تا با استفاده از دستورات SQL مستقیم و اتصال به پایگاه داده، عملیات مورد نیاز را انجام دهند. Dapper به عنوان یکی از سریع‌ترین ORMها شناخته می‌شود. ویژگی‌ها: بسیار سریع و سبک. استفاده آسان و مستقیم از SQL. ادغام ساده با ADO.NET. مناسب برای برنامه‌هایی که نیاز به کارایی و سرعت بالا دارند. تفاوت‌ها: 1- سادگی و سرعت: Dapper به دلیل سبک بودن و استفاده مستقیم از SQL، سریع‌ترین ORM است. ADO.NET نیز به دلیل دسترسی مستقیم به پایگاه داده، کارایی بالایی دارد. EF و EF Core به دلیل استفاده از مدل‌های شی‌گرا، پیچیدگی بیشتری دارند اما توسعه را ساده‌تر می‌کنند. 2- قابلیت مدل‌سازی داده‌ها: EF و EF Core امکانات پیشرفته‌ای برای مدل‌سازی داده‌های پیچیده دارند. Dapper و ADO.NET کمتر بر مدل‌سازی داده‌ها تمرکز دارند و بیشتر بر عملکرد تمرکز دارند. 3- پشتیبانی از چندین پایگاه داده: EF و EF Core از چندین پایگاه داده مختلف پشتیبانی می‌کنند. Dapper و ADO.NET نیز قابل استفاده با چندین پایگاه داده هستند اما تنظیمات بیشتری نیاز دارند. 4- سطح انتزاع: EF و EF Core سطح انتزاع بالاتری دارند و برنامه‌نویسان را از نوشتن مستقیم کوئری‌های SQL بی‌نیاز می‌کنند. Dapper و ADO.NET سطح انتزاع کمتری دارند و بیشتر به برنامه‌نویسان امکان کنترل مستقیم بر پایگاه داده را می‌دهند. نتیجه‌گیری: هر یک از این تکنولوژی‌ها و ابزارها مزایا و معایب خود را دارند و انتخاب مناسب بستگی به نیازهای خاص پروژه شما دارد. اگر به سادگی و کارایی بالا نیاز دارید، Dapper یا ADO.NETگزینه‌های خوبی هستند. اگر به امکانات پیشرفته‌تر برای مدل‌سازی و مدیریت داده‌ها نیاز دارید، EF یا EF Core می‌توانند انتخاب‌های مناسبی باشند.
آموزش اتصال ASP.NET Core MVC به 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; } } } پوشه 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; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-3PDBPI3\SQLEXPRESS; Initial Catalog=StoreEf; Integrated Security=True; TrustServerCertificate=True;"); } } }
در پک منیجر Add-Migration InitialCreate را اضافه می کنید تا Migration ساخته شود و Update-Database را هم می زنیم تا اتصال در دیتابیس بر قرار می شود و جدول customer ایجاد شده است و Migration ایجاد شده است