در اینجا سه روش مختلف برای افزودن اشیاء به لیست 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 در یک برنامه کنسول سی شارپ بود.
این کد شامل دو بخش اصلی است: ایجاد و پر کردن یک پایگاه داده SQL و سپس استفاده از Entity Framework در C# برای دسترسی به دادهها. بیایید هر بخش را توضیح دهیم:
1. ایجاد و پر کردن پایگاه داده SQL
CREATE DATABASE People_DB;
GO
USE People_DB;
GO
CREATE TABLE People (
PersonID int IDENTITY(1,1) PRIMARY KEY,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50) NOT NULL,
Age int NOT NULL
);
GO
INSERT INTO People (FirstName, LastName, Age)
VALUES ('Ali', 'Rezai', 32), ('Mohammad', 'Naseri', 24), ('Hasan', 'Karimi', 55);
GO
- CREATE DATABASE People_DB;:
یک پایگاه داده جدید به نام People_DB ایجاد میکند.
- USE People_DB;:
پایگاه داده People_DB را برای استفاده انتخاب میکند.
- CREATE TABLE People (...);:
یک جدول به نام People با ستونهای PersonID, FirstName, LastName, و Age ایجاد میکند. PersonID به صورت خودکار افزایش مییابد و کلید اصلی است.
- INSERT INTO People (...);:
سه رکورد به جدول People اضافه میکند.
2. استفاده از Entity Framework در C#
People_DBEntities dB = new People_DBEntities();
var list = dB.People.ToList();
foreach (var item in list)
{
Console.WriteLine($"PersonID: {item.PersonID}, Name: {item.FirstName}, Family: {item.LastName}, Age: {item.Age}");
}
Console.ReadKey();
- People_DBEntities dB = new People_DBEntities();:
یک شیء از نوع People_DBEntities ایجاد میکند که نمایانگر پایگاه داده است.
- var list = dB.People.ToList();:
تمام رکوردهای جدول People را به صورت لیست بازیابی میکند.
- foreach (var item in list) {...}:
هر رکورد را در لیست پیمایش کرده و اطلاعات آن را چاپ میکند.
این کد به شما اجازه میدهد تا دادههای موجود در پایگاه داده را با استفاده از Entity Framework در C# بازیابی و نمایش دهید.
برای نصب Entity Framework، میتوانید از روشهای مختلفی استفاده کنید. در اینجا دو روش رایج برای نصب Entity Framework Core و Entity Framework 6 را توضیح میدهم:
نصب Entity Framework Core- با استفاده از .NET CLI:
- ابتدا مطمئن شوید که .NET SDK نصب شده است.
- سپس دستور زیر را در خط فرمان اجرا کنید:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
- این دستور بسته NuGet مربوط به SQL Server را نصب میکند. میتوانید نسخه خاصی را با استفاده از -v مشخص کنید، مثلاً:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 6.0.14
- با استفاده از Visual Studio:
- از منوی Visual Studio، گزینه Project > Manage NuGet Packages را انتخاب کنید.
- در تب Browse، بسته Microsoft.EntityFrameworkCore.SqlServer را جستجو و نصب کنید.
نصب Entity Framework 6- با استفاده از Package Manager Console:
- از منوی Visual Studio، گزینه Tools > NuGet Package Manager > Package Manager Console را انتخاب کنید.
- دستور زیر را در کنسول اجرا کنید:
Install-Package EntityFramework
- برای نصب نسخه خاصی، از -Version استفاده کنید، مثلاً:
Install-Package EntityFramework -Version 6.2.0
- با استفاده از Manage NuGet Packages:
- از منوی Visual Studio، گزینه Project > Manage NuGet Packages را انتخاب کنید.
- در تب Browse، بسته EntityFramework را جستجو و نصب کنید.
این روشها به شما کمک میکنند تا Entity Framework را به پروژه خود اضافه کنید و از آن برای دسترسی به دادهها استفاده کنید.
4.8M حجم رسانه بالاست
مشاهده در ایتا
اضافه کردن (Insert)
Person p1 = new Person()
{
FirstName = "hasan",
LastName = "naseri",
Age = 20
};
dB.People.Add(p1);
در این بخش، یک شیء جدید از کلاس Person ایجاد کرده و آن را به مجموعه People در پایگاه داده اضافه میکنید.
انتخاب (Select)
var res = dB.People.SingleOrDefault(p => p.PersonID == 4);
این کد یک شخص را با PersonID برابر با ۴ از پایگاه داده انتخاب میکند. اگر چنین شخصی وجود داشته باشد، آن را در متغیر res ذخیره میکند.
بروز رسانی (Update)
if (res != null)
{
res.Age = 45;
}
اگر شخصی با PersonID برابر با ۴ پیدا شود، سن او را به ۴۵ تغییر میدهید.
حذف (Delete)
dB.People.Remove(res);
این کد شخص انتخاب شده را از پایگاه داده حذف میکند.
ذخیره (Save)
dB.SaveChanges();
در نهایت، تمام تغییرات انجام شده را در پایگاه داده ذخیره میکنید.