شروع کار با Entity Framework Core

Summarize this content to 400 words in Persian Lang
در این بخش دوم از سری Entity Framework Core، مراحل راهاندازی یک پروژه پایه با EF Core، نصب بستههای NuGet مورد نیاز و پیکربندی DbContext، ایجاد اولین مهاجرت و انجام عملیات اولیه CRUD. ما یک نمونه برنامه کاربردی برای مدیریت رویدادها، دستهها و شرکتکنندگان میسازیم، که با پیشرفت در سریها به تکامل خود ادامه میدهد.
1. نصب EF Core (بستههای NuGet)
برای شروع، یک مورد جدید ایجاد کنید هسته ASP.NET پروژه در ویژوال استودیو ما EF Core و ارائه دهنده SQL Server را نصب خواهیم کرد.
نصب گام به گام:
یک پروژه جدید ایجاد کنید:
در ویژوال استودیو، به File > New > Project و انتخاب کنید ASP.NET Core Web API.
پروژه را نام ببرید EventManagement.
Entity Framework Core را نصب کنید:ما باید EF Core و ارائه دهنده SQL Server را از طریق NuGet نصب کنیم. را باز کنید NuGet Package Manager یا از خط فرمان استفاده کنید.
دستورات زیر را در کنسول Package Manager:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
روش دیگر، با استفاده از CLI:
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. راه اندازی DbContext
این DbContext یک جلسه با پایگاه داده را نشان می دهد و برای پرس و جو و ذخیره داده ها استفاده می شود. ما یک را ایجاد خواهیم کرد EventDbContext کلاس برای مدیریت تعامل با پایگاه داده.
راه اندازی مرحله به مرحله:
مدل ها را ایجاد کنید: مدل های پایه ای را تعریف کنید که موجودیت های موجود در سیستم ما را نشان می دهد: Event، Category، و Attendee.
public class Event
{
public int EventId { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
public ListAttendee> Attendees { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public ListEvent> Events { get; set; }
}
public class Attendee
{
public int AttendeeId { get; set; }
public string FullName { get; set; }
public int EventId { get; set; }
public Event Event { get; set; }
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
DbContext را ایجاد کنید: بعد ایجاد کنید EventDbContext کلاس، که دسترسی به پایگاه داده را مدیریت می کند.
public class EventDbContext : DbContext
{
public EventDbContext(DbContextOptionsEventDbContext> options) : base(options)
{
}
public DbSetEvent> Events { get; set; }
public DbSetCategory> Categories { get; set; }
public DbSetAttendee> Attendees { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
DbContext را در پیکربندی کنید Startup.cs: در یک برنامه ASP.NET Core، ثبت نام کنید EventDbContext در ظرف DI:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContextEventDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”)));
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خود را تضمین کنید appsettings.json شامل یک رشته اتصال به پایگاه داده SQL Server است:
“ConnectionStrings”: {
“DefaultConnection”: “Server=(localdb)\\mssqllocaldb;Database=EventManagementDb;Trusted_Connection=True;”
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. ایجاد اولین مهاجرت و پایگاه داده
یک بار DbContext تنظیم شده است، می توانیم مهاجرت اولیه را ایجاد کرده و پایگاه داده را به روز کنیم.
مهاجرت گام به گام:
مهاجرت اولیه را اضافه کنید: برای ایجاد مهاجرت اولیه دستور زیر را اجرا کنید:
dotnet ef migrations add InitialCreate
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پایگاه داده را به روز کنید: مهاجرت را برای ایجاد پایگاه داده و جداول اعمال کنید:
dotnet ef database update
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
EF Core یک پایگاه داده با جداول ایجاد می کند Events، Categories، و Attendees، بر اساس مدل های ما.
4. ایجاد EventController
اکنون که پایگاه داده ما راه اندازی شده است، یک کنترل کننده برای تعامل با آن ایجاد می کنیم Event موجودیت این کنترلر عملیات CRUD را از طریق درخواست های HTTP مدیریت می کند.
راه اندازی گام به گام کنترلر:
یک کنترلر جدید ایجاد کنید:
در کنترل کننده ها پوشه، کلیک راست کرده و انتخاب کنید افزودن > کنترلر.
انتخاب کنید کنترلر API – خالی است و اسمش را بگذار EventController.
یا به صورت دستی کنترلر را به صورت زیر ایجاد کنید:
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
{
private readonly EventDbContext _context;
public EventController(EventDbContext context)
{
_context = context;
}
// GET: api/Event
[HttpGet]
public async TaskActionResultIEnumerableEvent>>> GetEvents()
{
return await _context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.ToListAsync();
}
// GET: api/Event/5
[HttpGet(“{id}”)]
public async TaskActionResultEvent>> GetEvent(int id)
{
var @event = await _context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.FirstOrDefaultAsync(e => e.EventId == id);
if (@event == null)
{
return NotFound();
}
return @event;
}
// POST: api/Event
[HttpPost]
public async TaskActionResultEvent>> CreateEvent(Event newEvent)
{
_context.Events.Add(newEvent);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetEvent), new { id = newEvent.EventId }, newEvent);
}
// PUT: api/Event/5
[HttpPut(“{id}”)]
public async TaskIActionResult> UpdateEvent(int id, Event updatedEvent)
{
if (id != updatedEvent.EventId)
{
return BadRequest();
}
_context.Entry(updatedEvent).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!EventExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// DELETE: api/Event/5
[HttpDelete(“{id}”)]
public async TaskIActionResult> DeleteEvent(int id)
{
var @event = await _context.Events.FindAsync(id);
if (@event == null)
{
return NotFound();
}
_context.Events.Remove(@event);
await _context.SaveChangesAsync();
return NoContent();
}
private bool EventExists(int id)
{
return _context.Events.Any(e => e.EventId == id);
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
5. تست API
می توانید استفاده کنید پستچی یا فحش دادن برای آزمایش نقاط پایانی API برای عملیات CRUD. Swagger در ASP.NET Core تعبیه شده است و با اجرای برنامه و پیمایش به آن می توان به آن دسترسی داشت /swagger.
6. عملیات اصلی CRUD (ایجاد، خواندن، به روز رسانی، حذف)
در اینجا نمونه هایی از عملیات اصلی CRUD که ما در آن پیاده سازی کردیم، آورده شده است EventController:
یک رویداد جدید ایجاد کنید:
public async Task CreateEvent(EventDbContext context)
{
var category = new Category { Name = “Technology” };
var newEvent = new Event
{
Name = “Tech Conference”,
Date = DateTime.Now,
Category = category
};
context.Events.Add(newEvent);
await context.SaveChangesAsync();
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
رویدادها را بخوانید:
public async TaskListEvent>> GetAllEvents(EventDbContext context)
{
return await context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.ToListAsync();
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یک رویداد را به روز کنید:
public async Task UpdateEvent(EventDbContext context, int eventId)
{
var eventToUpdate = await context.Events.FindAsync(eventId);
if (eventToUpdate != null)
{
eventToUpdate.Name = “Updated Event Name”;
context.Events.Update(eventToUpdate);
await context.SaveChangesAsync();
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
حذف یک رویداد:
public async Task DeleteEvent(EventDbContext context, int eventId)
{
var eventToDelete = await context.Events.FindAsync(eventId);
if (eventToDelete != null)
{
context.Events.Remove(eventToDelete);
await context.SaveChangesAsync();
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نتیجه گیری
در این قسمت از سری، EF Core را نصب کردیم و آن را راه اندازی کردیم DbContext، اولین مهاجرت را ایجاد کرد و عملیات اولیه CRUD را از طریق یک نشان داد EventController. این تنظیمات پایه و اساس سیستم مدیریت رویداد ما را تشکیل می دهد و
در این بخش دوم از سری Entity Framework Core، مراحل راهاندازی یک پروژه پایه با EF Core، نصب بستههای NuGet مورد نیاز و پیکربندی DbContext
، ایجاد اولین مهاجرت و انجام عملیات اولیه CRUD. ما یک نمونه برنامه کاربردی برای مدیریت رویدادها، دستهها و شرکتکنندگان میسازیم، که با پیشرفت در سریها به تکامل خود ادامه میدهد.
1. نصب EF Core (بستههای NuGet)
برای شروع، یک مورد جدید ایجاد کنید هسته ASP.NET پروژه در ویژوال استودیو ما EF Core و ارائه دهنده SQL Server را نصب خواهیم کرد.
نصب گام به گام:
-
یک پروژه جدید ایجاد کنید:
- در ویژوال استودیو، به File > New > Project و انتخاب کنید ASP.NET Core Web API.
- پروژه را نام ببرید
EventManagement
.
-
Entity Framework Core را نصب کنید:
ما باید EF Core و ارائه دهنده SQL Server را از طریق NuGet نصب کنیم. را باز کنید NuGet Package Manager یا از خط فرمان استفاده کنید.
دستورات زیر را در کنسول Package Manager:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
روش دیگر، با استفاده از CLI:
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
2. راه اندازی DbContext
این DbContext
یک جلسه با پایگاه داده را نشان می دهد و برای پرس و جو و ذخیره داده ها استفاده می شود. ما یک را ایجاد خواهیم کرد EventDbContext
کلاس برای مدیریت تعامل با پایگاه داده.
راه اندازی مرحله به مرحله:
-
مدل ها را ایجاد کنید: مدل های پایه ای را تعریف کنید که موجودیت های موجود در سیستم ما را نشان می دهد:
Event
،Category
، وAttendee
.
public class Event
{
public int EventId { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
public ListAttendee> Attendees { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
public ListEvent> Events { get; set; }
}
public class Attendee
{
public int AttendeeId { get; set; }
public string FullName { get; set; }
public int EventId { get; set; }
public Event Event { get; set; }
}
-
DbContext را ایجاد کنید: بعد ایجاد کنید
EventDbContext
کلاس، که دسترسی به پایگاه داده را مدیریت می کند.
public class EventDbContext : DbContext
{
public EventDbContext(DbContextOptionsEventDbContext> options) : base(options)
{
}
public DbSetEvent> Events { get; set; }
public DbSetCategory> Categories { get; set; }
public DbSetAttendee> Attendees { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
-
DbContext را در پیکربندی کنید
Startup.cs
: در یک برنامه ASP.NET Core، ثبت نام کنیدEventDbContext
در ظرف DI:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContextEventDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
خود را تضمین کنید appsettings.json
شامل یک رشته اتصال به پایگاه داده SQL Server است:
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=EventManagementDb;Trusted_Connection=True;"
}
3. ایجاد اولین مهاجرت و پایگاه داده
یک بار DbContext
تنظیم شده است، می توانیم مهاجرت اولیه را ایجاد کرده و پایگاه داده را به روز کنیم.
مهاجرت گام به گام:
- مهاجرت اولیه را اضافه کنید: برای ایجاد مهاجرت اولیه دستور زیر را اجرا کنید:
dotnet ef migrations add InitialCreate
- پایگاه داده را به روز کنید: مهاجرت را برای ایجاد پایگاه داده و جداول اعمال کنید:
dotnet ef database update
EF Core یک پایگاه داده با جداول ایجاد می کند Events
، Categories
، و Attendees
، بر اساس مدل های ما.
4. ایجاد EventController
اکنون که پایگاه داده ما راه اندازی شده است، یک کنترل کننده برای تعامل با آن ایجاد می کنیم Event
موجودیت این کنترلر عملیات CRUD را از طریق درخواست های HTTP مدیریت می کند.
راه اندازی گام به گام کنترلر:
-
یک کنترلر جدید ایجاد کنید:
- در کنترل کننده ها پوشه، کلیک راست کرده و انتخاب کنید افزودن > کنترلر.
- انتخاب کنید کنترلر API – خالی است و اسمش را بگذار
EventController
.
یا به صورت دستی کنترلر را به صورت زیر ایجاد کنید:
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
[ApiController]
[Route("api/[controller]")]
public class EventController : ControllerBase
{
private readonly EventDbContext _context;
public EventController(EventDbContext context)
{
_context = context;
}
// GET: api/Event
[HttpGet]
public async TaskActionResultIEnumerableEvent>>> GetEvents()
{
return await _context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.ToListAsync();
}
// GET: api/Event/5
[HttpGet("{id}")]
public async TaskActionResultEvent>> GetEvent(int id)
{
var @event = await _context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.FirstOrDefaultAsync(e => e.EventId == id);
if (@event == null)
{
return NotFound();
}
return @event;
}
// POST: api/Event
[HttpPost]
public async TaskActionResultEvent>> CreateEvent(Event newEvent)
{
_context.Events.Add(newEvent);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetEvent), new { id = newEvent.EventId }, newEvent);
}
// PUT: api/Event/5
[HttpPut("{id}")]
public async TaskIActionResult> UpdateEvent(int id, Event updatedEvent)
{
if (id != updatedEvent.EventId)
{
return BadRequest();
}
_context.Entry(updatedEvent).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!EventExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// DELETE: api/Event/5
[HttpDelete("{id}")]
public async TaskIActionResult> DeleteEvent(int id)
{
var @event = await _context.Events.FindAsync(id);
if (@event == null)
{
return NotFound();
}
_context.Events.Remove(@event);
await _context.SaveChangesAsync();
return NoContent();
}
private bool EventExists(int id)
{
return _context.Events.Any(e => e.EventId == id);
}
}
5. تست API
می توانید استفاده کنید پستچی یا فحش دادن برای آزمایش نقاط پایانی API برای عملیات CRUD. Swagger در ASP.NET Core تعبیه شده است و با اجرای برنامه و پیمایش به آن می توان به آن دسترسی داشت /swagger
.
6. عملیات اصلی CRUD (ایجاد، خواندن، به روز رسانی، حذف)
در اینجا نمونه هایی از عملیات اصلی CRUD که ما در آن پیاده سازی کردیم، آورده شده است EventController
:
یک رویداد جدید ایجاد کنید:
public async Task CreateEvent(EventDbContext context)
{
var category = new Category { Name = "Technology" };
var newEvent = new Event
{
Name = "Tech Conference",
Date = DateTime.Now,
Category = category
};
context.Events.Add(newEvent);
await context.SaveChangesAsync();
}
رویدادها را بخوانید:
public async TaskListEvent>> GetAllEvents(EventDbContext context)
{
return await context.Events
.Include(e => e.Category)
.Include(e => e.Attendees)
.ToListAsync();
}
یک رویداد را به روز کنید:
public async Task UpdateEvent(EventDbContext context, int eventId)
{
var eventToUpdate = await context.Events.FindAsync(eventId);
if (eventToUpdate != null)
{
eventToUpdate.Name = "Updated Event Name";
context.Events.Update(eventToUpdate);
await context.SaveChangesAsync();
}
}
حذف یک رویداد:
public async Task DeleteEvent(EventDbContext context, int eventId)
{
var eventToDelete = await context.Events.FindAsync(eventId);
if (eventToDelete != null)
{
context.Events.Remove(eventToDelete);
await context.SaveChangesAsync();
}
}
نتیجه گیری
در این قسمت از سری، EF Core را نصب کردیم و آن را راه اندازی کردیم DbContext
، اولین مهاجرت را ایجاد کرد و عملیات اولیه CRUD را از طریق یک نشان داد EventController
. این تنظیمات پایه و اساس سیستم مدیریت رویداد ما را تشکیل می دهد و