برنامه نویسی

ASP.NET CORE API با Entity Framework

معرفی

ASP.NET Core یک چارچوب رایگان منبع باز و کراس پلتفرم برای ایجاد برنامه های کاربردی مبتنی بر ابر، مانند برنامه های کاربردی وب، برنامه های کاربردی اینترنت اشیا و پشتیبان های تلفن همراه است. ASP.NET Core MVC یک میان افزار است که چارچوبی برای ایجاد API و برنامه های وب با استفاده از MVC فراهم می کند.

HTTP فقط برای ارائه صفحات وب نیست. همچنین یک پلت فرم قدرتمند برای ایجاد API هایی است که خدمات و داده ها را نشان می دهد. HTTP ساده، منعطف و در همه جا حاضر است. بیشتر پلتفرمی که می توانید به آن فکر کنید دارای یک کتابخانه HTTP است، بنابراین خدمات HTTP می تواند به طیف گسترده ای از مشتریان، از جمله مرورگرها، دستگاه های تلفن همراه و برنامه های دسکتاپ سنتی دسترسی پیدا کند.

ASP.NET Core از MVC Building Web API پشتیبانی داخلی دارد. ادغام این دو فریم ورک، ایجاد برنامه‌هایی را که شامل UI (HTML) و API می‌شوند، آسان‌تر می‌کند، زیرا اکنون پایه کد و خط لوله یکسانی دارند.

بررسی اجمالی

در اینجا API ایجاد شده است:

شکل زیر طراحی اولیه اپلیکیشن را نشان می دهد.

توضیحات تصویر

مشتری هر چیزی است که API وب (مرورگر، برنامه تلفن همراه و غیره) را مصرف می کند. ما در این آموزش مشتری نمی نویسیم.

مدل یک شی است که داده ها را در برنامه شما نشان می دهد. در این مورد، تنها مدل باید آیتم را انجام دهد. مدل به عنوان کلاس C # ساده (POCO) نشان داده می شود.

یک کنترلر شی ای است که درخواست های HTTP را مدیریت می کند و پاسخ های HTTP را تولید می کند. این برنامه دارای یک کنترلر خواهد بود.

ابزار سازی

  • ویژوال استودیو 2017
  • پستچی

یک برنامه اصلی ASP.NET ایجاد کنید

ویژوال استودیو را باز کنید، File -> New -> Project، ASP.NET Core Web Application Template را انتخاب کنید و روی OK کلیک کنید.

توضیحات تصویر
شکل: منوی پروژه

همانطور که در شکل زیر نشان داده شده است یک الگوی API را انتخاب کنید.

توضیحات تصویر

سپس روی OK کلیک کنید، یک پروژه هسته ای جدید ASP .NET با چند فایل پیکربندی و کنترلر از پیش تعریف شده ایجاد می شود.

توضیحات تصویر

کلاس program.cs که حاوی متد اصلی با متدی به نام CreatWebhostBuilder () است، وظیفه اجرا و پیکربندی برنامه را بر عهده دارد. میزبان برنامه با نوع Startup به عنوان کلاس Startup تنظیم شده است.

کلاس Startup.cs شامل دو روش مهم است:

ConfigureServices() – برای ایجاد کانتینرهای تزریق وابستگی و افزودن خدمات برای پیکربندی آن سرویس ها استفاده می شود.

پیکربندی () – برای پیکربندی نحوه پاسخگویی برنامه هسته ASP.NET به یک درخواست HTTP فردی استفاده می شود.

Author.cs

namespace API_Demo.Entities
{
[Table("Author",Schema ="dbo")]
public class Author
{
[Key]
public Guid AuthorId { get; set; }
[Required]
[MaxLength(50)]
public string FirstName { get; set; }
[Required]
[MaxLength(50)]
public string LastName { get; set; }
[Required]
[MaxLength(50)]
public string Genre { get; set; }
public ICollection<book> Books { get; set; } = new List<book>();
}
}</book></book>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Book.cs

namespace API_Demo.Entities
{
[Table("Book", Schema = "dbo")]
public class Book
{
[Key]    
public  Guid BookId { get; set; }
[Required]
[MaxLength(150)]
public string Title { get; set; }
[MaxLength(200)]
public string Description { get; set; }
[ForeignKey("AuthorId")]
public Author Author { get; set; }
public Guid AuthorId { get; set; }
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد یک فایل زمینه

بیایید یک فایل زمینه ایجاد کنیم، یک فایل کلاس جدید اضافه کنیم و نام آن را LibraryContext.cs بگذاریم.

LibraryContext.cs

namespace API_Demo.Entities
{
public class LibraryContext:DbContext
{
public LibraryContext(DbContextOptions<librarycontext> options):base(options)
{
Database.Migrate();
}
public DbSet<author> Authors { get; set; }
public DbSet<book> Books { get; set; }
}
}
</book></author></librarycontext>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت، بیایید زمینه خود را در Startup.cs ثبت کنیم.

namespace API_Demo{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext<librarycontext>(op => op.UseSqlServer(Configuration["ConnectionString:BookStoreDB"]));
services.AddScoped<ilibraryrepository<author>, LibraryRepository>();
}
</ilibraryrepository<author></librarycontext>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد پایگاه داده از رویکرد کد اول

دستور را در کنسول Package Manager اجرا و دنبال کنید.

Add-Migration API_Demo.Entities.LibraryContext

این یک کلاس برای مهاجرت ایجاد می کند. برای به روز رسانی دیتابیس دستور زیر را اجرا کنید.

به روز رسانی – پایگاه داده

ارسال داده

بیایید مقداری داده به جدول نویسنده اضافه کنیم. برای این کار، باید روش OnModelCreating را در کلاس LibraryContact لغو کنیم.

namespace API_Demo.Entities
{
public class LibraryContext:DbContext
{
public LibraryContext(DbContextOptions<librarycontext> options):base(options)
{
Database.Migrate();
}
public DbSet<author> Authors { get; set; }
public DbSet<book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<author>().HasData(new Author
{
AuthorId= Guid.NewGuid(),
FirstName = "nik",
LastName = "rathod",
Genre = "Drama"
}, new Author
{
AuthorId=Guid.NewGuid(),
FirstName = "vivek",
LastName = "rathod",
Genre = "Fantasy"
});
}
}
}</author></book></author></librarycontext>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیایید مهاجرت را اجرا کنیم و یک بار دیگر دستور را به روز کنیم.

  1. Add-Migration API_Demo.Entities.LibraryContextSeed

  2. به روز رسانی – پایگاه داده

ایجاد یک مخزن

بیایید یک پوشه مخزن اضافه کنیم تا الگوی مخزن را برای دسترسی به متد زمینه اعمال کنیم.

دو پوشه دیگر – Contract and Implementation – در زیر پوشه مخزن ایجاد کنید.

رابط ILibraryRepository.cs را در پوشه Contract ایجاد کنید.

ILibraryRepository.cs

namespace API_Demo.Repository.Contract
{
public interface ILibraryRepository<t>
{
IEnumerable<t> GetAllAuthor();
}
}</t></t>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجازه دهید یک کلاس در زیر پوشه Implementation برای اجرای تابع ایجاد کنیم.

LibraryRepository.cs

namespace API_Demo.Repository.Implementation
{
public class LibraryRepository: ILibraryRepository<author>
{
readonly LibraryContext _libraryContext;
public LibraryRepository(LibraryContext context)
{
_libraryContext = context;
}
public IEnumerable<author> GetAllAuthor()
{
return _libraryContext.Authors.ToList();
}
}
}</author></author>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

متد بالا لیست کاملی از رکوردها را از جدول نویسنده () GetAllAuthor برمی گرداند.

بیایید مخزن را با استفاده از تزریق وابستگی پیکربندی کنیم. Startup.CS فایل را باز کنید، کد زیر را به متد ConfigurationServices اضافه کنید

services.AddScoped<ilibraryrepository<author>, LibraryRepository>();
</ilibraryrepository<author>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در جستجوی Dedicated.Net Developer هستید؟ جستجوی شما در اینجا به پایان می رسد.

یک کنترلر API ایجاد کنید

روی کنترلر کلیک راست کرده و به Add-> Controller بروید. به سادگی الگوی API را انتخاب کنید و کنترلر را نام ببرید. ما کنترلر را به عنوان Libraries Controller نامگذاری کردیم.

توضیحات تصویر

LibrariesController.cs

namespace API_Demo.Controllers
{
[Route("api/Libraries")]
[ApiController]
public class LibrariesController : ControllerBase
{
private readonly ILibraryRepository<author> _libraryRepository;
public LibrariesController(ILibraryRepository<author> libraryRepository)
{
_libraryRepository = libraryRepository;
}
// GET: api/Libraries/GetAllAuthor
[HttpGet]
[Route("GetAllAuthor")]
public IActionResult GetAllAuthor()
{
IEnumerable<author> authors = _libraryRepository.GetAllAuthor();
return Ok(authors);
}
}
}</author></author></author>

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما یک api وب با نقطه پایانی api/Libraries/GetAllAuthor ایجاد کرده ایم تا لیست نویسنده را از پایگاه داده بازیابی کنیم.

بیایید API را با استفاده از ابزار Postman آزمایش کنیم.

توضیحات تصویر

بله، ما در پاسخ لیست نویسنده را دریافت کردیم.

نتیجه

در این مقاله با نحوه عملی آشنا شدیم Asp.Net Core API با مکانیزم Entity Framework کار می کند. یادگیری این رویکرد ساده است و وقتی با فرآیند و نحوه عملکرد آن آشنا شدید، می توانید به معنای واقعی کلمه با توسعه بازی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا