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
مشاهده در ایتا
دانلود
Select * From Person as p و From p in Person Select p برای توضیح دستورات SQL و نحوه استفاده از آن‌ها در یک برنامه کنسول سی‌شارپ، ابتدا به توضیح هر دستور می‌پردازیم و سپس یک مثال عملی ارائه می‌دهیم. دستور SELECT * FROM Person AS pاین دستور تمام ستون‌های جدول Person را انتخاب می‌کند و به آن یک نام مستعار p می‌دهد. به عبارت دیگر، این دستور تمام رکوردهای موجود در جدول Person را بازیابی می‌کند. دستور FROM p in Person SELECT pاین دستور مشابه دستور قبلی است، اما به سبک LINQ در سی‌شارپ نوشته شده است. این دستور تمام رکوردهای جدول Person را انتخاب می‌کند و هر رکورد را به صورت یک شیء p برمی‌گرداند. مثال کنسول سی‌شارپدر این مثال، فرض می‌کنیم که یک پایگاه داده SQL Server داریم که شامل جدولی به نام Person است. ابتدا باید یک اتصال به پایگاه داده برقرار کنیم و سپس داده‌ها را بازیابی کنیم. using System; using System.Data.SqlClient; using System.Linq; using System.Collections.Generic; namespace ConsoleApp { class Program { static void Main(string[] args) { string connectionString = "your_connection_string_here"; List<Person> people = new List<Person>(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = "SELECT * FROM Person"; SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Person person = new Person { Id = reader.GetInt32(0), Name = reader.GetString(1), Age = reader.GetInt32(2) }; people.Add(person); } } var selectedPeople = from p in people select p; foreach (var person in selectedPeople) { Console.WriteLine($"ID: {person.Id}, Name: {person.Name}, Age: {person.Age}"); } } } class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } } در این مثال: - ابتدا یک اتصال به پایگاه داده SQL Server برقرار می‌کنیم. - با استفاده از دستور SELECT * FROM Person تمام رکوردهای جدول Person را بازیابی می‌کنیم. - داده‌های بازیابی شده را در یک لیست از اشیاء Person ذخیره می‌کنیم. - با استفاده از LINQ، تمام رکوردهای موجود در لیست را انتخاب و چاپ می‌کنیم.
int[] numbers = { 1, 3, 5, 7, 9, 10, 15, 19, 20, 25, 34, 46, 50, 60, 70, 80, 100 }; این خط یک آرایه از اعداد صحیح به نام numbers ایجاد می‌کند. int[] result1 = (from n in numbers select n).ToArray(); این خط تمام اعداد موجود در آرایه numbers را انتخاب کرده و به یک آرایه جدید به نام result1 تبدیل می‌کند. int[] result2 = (from n in numbers orderby n descending select n).ToArray(); این خط اعداد موجود در آرایه numbers را به ترتیب نزولی مرتب کرده و به یک آرایه جدید به نام result2 تبدیل می‌کند. int[] result3 = (from n in numbers where n > 30 && n < 80 orderby n descending select n).ToArray(); این خط اعداد بزرگتر از 30 و کوچکتر از 80 را از آرایه numbers انتخاب کرده، به ترتیب نزولی مرتب کرده و به یک آرایه جدید به نام result3 تبدیل می‌کند. int result4 = (from n in numbers where n == 3 select n).First(); این خط اولین عدد برابر با 3 را از آرایه numbers انتخاب کرده و به متغیر result4 اختصاص می‌دهد. int result5 = (from n in numbers where n == 2 select n).FirstOrDefault(); این خط اولین عدد برابر با 2 را از آرایه numbers انتخاب کرده و به متغیر result5 اختصاص می‌دهد. اگر چنین عددی وجود نداشته باشد، مقدار پیش‌فرض (صفر) را برمی‌گرداند. int result6 = (from n in numbers where n == 3 select n).Single(); این خط تنها عدد برابر با 3 را از آرایه numbers انتخاب کرده و به متغیر result6 اختصاص می‌دهد. اگر بیش از یک عدد برابر با 3 وجود داشته باشد، خطا رخ می‌دهد. int result7 = (from n in numbers where n == 2 select n).SingleOrDefault(); این خط تنها عدد برابر با 2 را از آرایه numbers انتخاب کرده و به متغیر result7 اختصاص می‌دهد. اگر چنین عددی وجود نداشته باشد، مقدار پیش‌فرض (صفر) را برمی‌گرداند. var i1 = 123; var i2 = "Iman Madaeny"; var i3 = DateTime.Now; //i1 = "Iman"; این خطوط متغیرهای i1، i2 و i3 را با مقادیر مختلف مقداردهی می‌کنند. خط آخر که کامنت شده است، نشان می‌دهد که نمی‌توان مقدار i1 را به یک رشته تغییر داد. bool result8 = (from n in numbers where n == 2 select n).Any(); این خط بررسی می‌کند که آیا عددی برابر با 2 در آرایه numbers وجود دارد یا خیر و نتیجه را به متغیر result8 اختصاص می‌دهد. int Count = (from n in numbers select n).Count(); int Max = (from n in numbers select n).Max(); int Min = (from n in numbers select n).Min(); int Sum = (from n in numbers select n).Sum(); این خطوط تعداد عناصر، بیشترین مقدار، کمترین مقدار و مجموع اعداد موجود در آرایه numbers را محاسبه می‌کنند. List<string> Names = new List<string>(); Names.Add("Iman"); Names.Add("Ali"); Names.Add("Sara"); Names.Add("Mohammad"); Names.Add("Mina"); این خطوط یک لیست از رشته‌ها به نام Names ایجاد کرده و چند نام به آن اضافه می‌کنند. var res1 = (from n in Names select n).ToList(); این خط تمام نام‌های موجود در لیست Names را انتخاب کرده و به یک لیست جدید به نام res1 تبدیل می‌کند. var res2 = (from n in Names where n.ToLower().Contains("i") select n).ToList(); این خط نام‌هایی که شامل حرف "i" هستند را از لیست Names انتخاب کرده و به یک لیست جدید به نام res2 تبدیل می‌کند. var res3 = (from n in Names where n.ToLower().StartsWith("i") select n).ToList(); این خط نام‌هایی که با حرف "i" شروع می‌شوند را از لیست Names انتخاب کرده و به یک لیست جدید به نام res3 تبدیل می‌کند. var res4 = (from n in Names where n.ToLower().EndsWith("i") select n).ToList(); این خط نام‌هایی که با حرف "i" تمام می‌شوند را از لیست Names انتخاب کرده و به یک لیست جدید به نام res4 تبدیل می‌کند.
عبارات لامبدا (Lambda Expressions) در سی شارپ یک روش ساده برای تعریف متدهای ناشناس هستند که به عنوان مقادیر از نوع Delegate استفاده می‌شوند. این عبارات به شما اجازه می‌دهند تا بدون نیاز به تعریف یک متد جداگانه، به سادگی یک تابع را درون کد خود تعریف و از آن استفاده کنید. ساختار یک عبارت لامبدا به صورت زیر است: (parameters) => expression برای مثال، فرض کنید می‌خواهید لیستی از اعداد را فیلتر کنید تا فقط اعدادی که بزرگتر از ۱۰ هستند باقی بمانند: List<int> numbers = new List<int> { 5, 10, 15, 20, 25 }; var filteredNumbers = numbers.Where(n => n > 10).ToList(); در این مثال، عبارت n => n > 10 یک لامبدا است که به عنوان یک شرط برای فیلتر کردن لیست اعداد استفاده می‌شود.
تعریف آرایه اعداد int[] numbers = { 1, 3, 5, 7, 9, 10, 15, 19, 20, 25, 34, 46, 50, 60, 70, 80, 100 }; این خط یک آرایه از اعداد صحیح به نام numbers تعریف می‌کند. مثال‌های مختلف با استفاده از LINQ و عبارات لامبدا- کپی کردن آرایه به یک آرایه جدید int[] result1 = (from n in numbers select n).ToArray(); var lambda1 = numbers.ToArray(); هر دو خط کد یک کپی از آرایه numbers ایجاد می‌کنند. - مرتب‌سازی نزولی int[] result2 = (from n in numbers orderby n descending select n).ToArray(); var lambda2 = numbers.OrderByDescending(n => n).ToArray(); این خطوط کد آرایه numbers را به صورت نزولی مرتب کرده و نتیجه را به یک آرایه جدید تبدیل می‌کنند. - فیلتر کردن و مرتب‌سازی نزولی int[] result3 = (from n in numbers where n > 30 && n < 80 orderby n descending select n).ToArray(); var lambda3 = numbers.Where(n => n > 30 && n < 80).OrderByDescending(n => n).ToArray(); این خطوط کد اعداد بین ۳۰ و ۸۰ را فیلتر کرده و سپس به صورت نزولی مرتب می‌کنند. - یافتن اولین عدد برابر با ۳ int result4 = (from n in numbers where n == 3 select n).First(); var lambda4 = numbers.First(n => n == 4); این خطوط کد اولین عدد برابر با ۳ را پیدا می‌کنند. توجه کنید که در lambda4 باید عدد ۳ باشد نه ۴. - یافتن اولین عدد برابر با ۲ یا مقدار پیش‌فرض int result5 = (from n in numbers where n == 2 select n).FirstOrDefault(); var lambda5 = numbers.FirstOrDefault(n => n == 2); این خطوط کد اولین عدد برابر با ۲ را پیدا می‌کنند یا اگر وجود نداشت مقدار پیش‌فرض (۰) را برمی‌گردانند. - یافتن تنها عدد برابر با ۳ int result6 = (from n in numbers where n == 3 select n).Single(); این خط کد تنها عدد برابر با ۳ را پیدا می‌کند و اگر بیش از یک عدد وجود داشته باشد، خطا می‌دهد. - یافتن تنها عدد برابر با ۲ یا مقدار پیش‌فرض int result7 = (from n in numbers where n == 2 select n).SingleOrDefault(); این خط کد تنها عدد برابر با ۲ را پیدا می‌کند یا اگر وجود نداشت مقدار پیش‌فرض (۰) را برمی‌گرداند. - بررسی وجود عدد برابر با ۲ bool result8 = (from n in numbers where n == 2 select n).Any(); var lambda8 = numbers.Any(n => n == 2); این خطوط کد بررسی می‌کنند که آیا عدد ۲ در آرایه وجود دارد یا خیر. - تعداد اعداد در آرایه int Count = (from n in numbers select n).Count(); var count = numbers.Count(); این خطوط کد تعداد اعداد در آرایه را برمی‌گردانند. - بیشترین و کمترین عدد در آرایه int Max = (from n in numbers select n).Max(); int Min = (from n in numbers select n).Min(); این خطوط کد بیشترین و کمترین عدد در آرایه را برمی‌گردانند. - مجموع اعداد در آرایه int Sum = (from n in numbers select n).Sum(); این خط کد مجموع اعداد در آرایه را برمی‌گرداند. کار با لیست اسامی List<string> Names = new List<string>(); Names.Add("Iman"); Names.Add("Ali"); Names.Add("Sara"); Names.Add("Mohammad"); Names.Add("Mina"); این خطوط کد یک لیست از اسامی ایجاد و چند نام به آن اضافه می‌کنند. - کپی کردن لیست به یک لیست جدید var res1 = (from n in Names select n).ToList(); var lam1 = Names.ToList(); هر دو خط کد یک کپی از لیست Names ایجاد می‌کنند. - فیلتر کردن اسامی که شامل حرف "i" هستند var res2 = (from n in Names where n.ToLower().Contains("i") select n).ToList(); var lam2 = Names.Where(n => n.ToLower().Contains("i")).ToList(); این خطوط کد اسامی که شامل حرف "i" هستند را فیلتر می‌کنند. - فیلتر کردن اسامی که با حرف "i" شروع می‌شوند var res3 = (from n in Names where n.ToLower().StartsWith("i") select n).ToList(); این خط کد اسامی که با حرف "i" شروع می‌شوند را فیلتر می‌کند. - فیلتر کردن اسامی که با حرف "i" تمام می‌شوند var res4 = (from n in Names where n.ToLower().EndsWith("i") select n).ToList(); این خط کد اسامی که با حرف "i" تمام می‌شوند را فیلتر می‌کند.
در اینجا سه روش مختلف برای افزودن اشیاء به لیست List<Person> را مشاهده می‌کنید. هر کدام از این روش‌ها مزایا و معایب خاص خود را دارند: - روش اول: ایجاد شیء و سپس تنظیم خصوصیات Person p1 = new Person(); p1.PersonID = 1; p1.Name = "Iman"; p1.family = "Madaeny"; p1.Age = 30; people.Add(p1); - مزایا: خوانایی بالا، مناسب برای زمانی که نیاز به تنظیم خصوصیات به صورت جداگانه دارید. - معایب: طولانی‌تر و نیاز به خطوط کد بیشتر. - روش دوم: استفاده از مقداردهی اولیه شیء Person p2 = new Person() { PersonID = 2, Name = "Sara", family = "Ahmadi", Age = 18 }; people.Add(p2); - مزایا: کوتاه‌تر و خواناتر، مناسب برای زمانی که می‌خواهید تمام خصوصیات را به صورت همزمان تنظیم کنید. - معایب: ممکن است برای اشیاء پیچیده‌تر کمتر خوانا باشد. - روش سوم: افزودن مستقیم شیء به لیست people.Add(new Person() { PersonID = 3, Name = "Ali", family = "Rezai", Age = 41 }); - مزایا: کوتاه‌ترین روش، مناسب برای افزودن سریع اشیاء به لیست. - معایب: ممکن است خوانایی کد را کاهش دهد و برای اشیاء پیچیده‌تر کمتر مناسب باشد. هر کدام از این روش‌ها بسته به نیاز و شرایط خاص پروژه می‌توانند مفید باشند.
یک مثال عملی کلاس Person internal class Person { public int PersonID { get; set; } public string Name { get; set; } public string family { get; set; } public int Age { get; set; } } کلاس PersonCar internal class PersonCar { public int PersonID { get; set; } public string CarName { get; set; } public string CarModel { get; set; } } کلاس Program static void Main(string[] args) { List<Person> people = new List<Person>(); Person p1 = new Person(); p1.PersonID = 1; p1.Name = "Iman"; p1.family = "Madaeny"; p1.Age = 30; people.Add(p1); Person p2 = new Person() { PersonID = 2, Name = "Sara", family = "Ahmadi", Age = 18 }; people.Add(p2); people.Add(new Person() { PersonID = 3, Name = "Ali", family = "Rezai", Age = 41 }); Console.WriteLine("------------ result1 ------------"); var result1 = people.ToList(); foreach (var p in result1) { Console.WriteLine($"ID : {p.PersonID} Name : {p.Name} Family : {p.family} Age : {p.Age}"); } Console.WriteLine("----------- result2 ----------"); var result2 = people.OrderByDescending(p => p.Age).ToList(); foreach (var p in result2) { Console.WriteLine($"ID : {p.PersonID} Name : {p.Name} Family : {p.family} Age : {p.Age}"); } Console.WriteLine("----------- result3 ----------"); var result3 = people.Where(p => p.Name.ToLower() == "iman").ToList(); foreach (var p in result3) { Console.WriteLine($"ID : {p.PersonID} Name : {p.Name} Family : {p.family} Age : {p.Age}"); } Console.WriteLine("---------- result4 -----------"); var result4 = people.Where(p => p.Age > 25 && p.Age < 40).ToList(); foreach (var p in result4) { Console.WriteLine($"ID : {p.PersonID} Name : {p.Name} Family : {p.family} Age : {p.Age}"); } Console.WriteLine("---------- result5 -----------"); var result5 = people.Select(p => p.Name).ToList(); foreach (var p in result5) { Console.WriteLine($"result : {p}"); } Console.WriteLine("---------- result6 -----------"); var result6 = people.Select(p => new { p.Name, p.Age }).ToList(); foreach (var p in result6) { Console.WriteLine($"result : {p}"); } Console.WriteLine("---------- join -----------"); List<PersonCar> Cars = new List<PersonCar>() { new PersonCar() { PersonID = 1, CarName = "Pride", CarModel = "1380" }, new PersonCar() { PersonID = 3, CarName = "peykan", CarModel = "1382" } }; var join =(from p in people join c in Cars on p .PersonID equals c.PersonID select new { p.PersonID, p.Name, p.family, p.Age, c.CarName, c.CarModel }).ToList(); foreach(var p in join) { Console.WriteLine($"result : {p}"); } Console.ReadKey(); }
linq-learning-SourceSara.com.pdf
حجم: 4.7M
توضیحات بیشتر در این فایل قرار دارد
سایت روکسو یک منبع عالی برای آموزش LINQ در سی شارپ (C#) است. این سایت آموزش‌های مقدماتی تا پیشرفته را به صورت رایگان ارائه می‌دهد و تمامی مباحث LINQ را به صورت مثال محور و کاربردی پوشش می‌دهد. شما می‌توانید از طریق لینک زیر به این آموزش‌ها دسترسی پیدا کنید: https://www.roxo.ir/series/linq-tutorials
Entity Framework (EF) یک ORM (Object-Relational Mapping) برای .NET است که به توسعه‌دهندگان اجازه می‌دهد با پایگاه‌داده‌ها به صورت شی‌ء‌گرا کار کنند. این ابزار به شما کمک می‌کند تا از کدهای SQL مستقیم بی‌نیاز شوید و تمام عملیات پایگاه‌داده را از طریق کدهای سی شارپ انجام دهید. به طور خلاصه، EF فرآیند کار با داده‌ها را آسان‌تر و سریع‌تر می‌کند. شما نیازی به نوشتن کدهای پیچیده SQL ندارید و می‌توانید به راحتی تغییرات در مدل داده‌هایتان را مدیریت کنید. این ابزار همچنین از انواع مختلف پایگاه‌داده‌ها پشتیبانی می‌کند، که این امر آن را به یک ابزار چندمنظوره تبدیل کرده است.
و Entity Framework (EF) چندین ویژگی و قابلیت دارد که کار با پایگاه‌داده‌ها را بسیار ساده‌تر می‌کند. در اینجا به برخی از مهم‌ترین ویژگی‌های آن اشاره می‌کنم: 1- مدل‌سازی داده‌ها: شما می‌توانید مدل‌های داده‌ای خود را به صورت کلاس‌های سی شارپ تعریف کنید. EF این کلاس‌ها را به جداول پایگاه‌داده تبدیل می‌کند. 2- کوئری‌نویسی: به جای نوشتن کوئری‌های SQL، می‌توانید از LINQ (Language Integrated Query) استفاده کنید که به شما اجازه می‌دهد کوئری‌ها را به صورت شی‌ء‌گرا بنویسید. 3- مهاجرت‌ها (Migrations): EF به شما اجازه می‌دهد تغییرات در مدل داده‌هایتان را به راحتی مدیریت کنید و این تغییرات را به پایگاه‌داده اعمال کنید. 4- ردیابی تغییرات: EF تغییرات در اشیاء را ردیابی می‌کند و به شما اجازه می‌دهد این تغییرات را به پایگاه‌داده اعمال کنید. 5- پشتیبانی از چندین پایگاه‌داده: EF از پایگاه‌داده‌های مختلفی مانند SQL Server، SQLite، MySQL و PostgreSQL پشتیبانی می‌کند. برای شروع کار با EF، ابتدا باید پکیج‌های مربوطه را نصب کنید. سپس می‌توانید مدل‌های داده‌ای خود را تعریف کرده و از EF برای انجام عملیات CRUD (Create, Read, Update, Delete) استفاده کنید.
بیایید یک مثال ساده از نحوه استفاده از Entity Framework در یک پروژه سی شارپ را بررسی کنیم. فرض کنیم می‌خواهیم یک برنامه ساده برای مدیریت کتاب‌ها ایجاد کنیم. 1. نصب پکیج‌های مورد نیازابتدا باید پکیج‌های Entity Framework Core را نصب کنید. می‌توانید از دستور زیر در Package Manager Console استفاده کنید: Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer 2. تعریف مدل داده‌اییک کلاس برای مدل داده‌ای کتاب‌ها ایجاد می‌کنیم: public class Book { public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } public int Year { get; set; } } 3. ایجاد کلاس Contextیک کلاس برای مدیریت ارتباط با پایگاه‌داده ایجاد می‌کنیم: public class LibraryContext : DbContext { public DbSet<Book> Books { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionStringHere"); } } 4. انجام عملیات CRUDحالا می‌توانیم عملیات CRUD را انجام دهیم. به عنوان مثال، برای اضافه کردن یک کتاب جدید: using (var context = new LibraryContext()) { var book = new Book { Title = "The Great Gatsby", Author = "F. Scott Fitzgerald", Year = 1925 }; context.Books.Add(book); context.SaveChanges(); } 5. خواندن داده‌هابرای خواندن داده‌ها از پایگاه‌داده: using (var context = new LibraryContext()) { var books = context.Books.ToList(); foreach (var book in books) { Console.WriteLine($"{book.Title} by {book.Author}"); } } 6. به‌روزرسانی داده‌هابرای به‌روزرسانی یک کتاب: using (var context = new LibraryContext()) { var book = context.Books.FirstOrDefault(b => b.Id == 1); if (book != null) { book.Title = "The Great Gatsby (Updated)"; context.SaveChanges(); } } 7. حذف داده‌هابرای حذف یک کتاب: using (var context = new LibraryContext()) { var book = context.Books.FirstOrDefault(b => b.Id == 1); if (book != null) { context.Books.Remove(book); context.SaveChanges(); } } این یک مثال ساده از نحوه استفاده از Entity Framework برای مدیریت داده‌ها در یک پروژه سی شارپ بود
یک مثال کامل از یک برنامه کنسول سی شارپ با استفاده از Entity Framework Core ایجاد کنیم. این برنامه یک پایگاه‌داده ساده برای مدیریت کتاب‌ها خواهد داشت. 1. ایجاد پروژه کنسولابتدا یک پروژه کنسول جدید در Visual Studio ایجاد کنید. 2. نصب پکیج‌های مورد نیازدر Package Manager Console، دستورات زیر را اجرا کنید تا پکیج‌های Entity Framework Core نصب شوند: Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer 3. تعریف مدل داده‌اییک کلاس برای مدل داده‌ای کتاب‌ها ایجاد کنید: public class Book { public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } public int Year { get; set; } } 4. ایجاد کلاس Contextیک کلاس برای مدیریت ارتباط با پایگاه‌داده ایجاد کنید: public class LibraryContext : DbContext { public DbSet<Book> Books { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionStringHere"); } } 5. انجام عملیات CRUD در برنامه کنسولدر فایل Program.cs، کد زیر را اضافه کنید تا عملیات CRUD را انجام دهید: using System; using System.Linq; namespace ConsoleApp { class Program { static void Main(string[] args) { using (var context = new LibraryContext()) { // اضافه کردن یک کتاب جدید var book = new Book { Title = "The Great Gatsby", Author = "F. Scott Fitzgerald", Year = 1925 }; context.Books.Add(book); context.SaveChanges(); // خواندن داده‌ها var books = context.Books.ToList(); Console.WriteLine("Books in the library:"); foreach (var b in books) { Console.WriteLine($"{b.Title} by {b.Author}"); } // به‌روزرسانی داده‌ها var bookToUpdate = context.Books.FirstOrDefault(b => b.Id == book.Id); if (bookToUpdate != null) { bookToUpdate.Title = "The Great Gatsby (Updated)"; context.SaveChanges(); } // حذف داده‌ها var bookToDelete = context.Books.FirstOrDefault(b => b.Id == book.Id); if (bookToDelete != null) { context.Books.Remove(bookToDelete); context.SaveChanges(); } } } } } 6. تنظیم Connection Stringدر کلاس LibraryContext، رشته اتصال (Connection String) را با اطلاعات پایگاه‌داده خود جایگزین کنید: protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=your_server;Database=your_database;Trusted_Connection=True;"); } 7. اجرای برنامهحالا می‌توانید برنامه را اجرا کنید. این برنامه ابتدا یک کتاب جدید اضافه می‌کند، سپس لیست کتاب‌ها را نمایش می‌دهد، کتاب را به‌روزرسانی می‌کند و در نهایت آن را حذف می‌کند. این یک مثال کامل از نحوه استفاده از Entity Framework Core در یک برنامه کنسول سی شارپ بود.