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>
بیایید مهاجرت را اجرا کنیم و یک بار دیگر دستور را به روز کنیم.
-
Add-Migration API_Demo.Entities.LibraryContextSeed
-
به روز رسانی – پایگاه داده
ایجاد یک مخزن
بیایید یک پوشه مخزن اضافه کنیم تا الگوی مخزن را برای دسترسی به متد زمینه اعمال کنیم.
دو پوشه دیگر – 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 کار می کند. یادگیری این رویکرد ساده است و وقتی با فرآیند و نحوه عملکرد آن آشنا شدید، می توانید به معنای واقعی کلمه با توسعه بازی کنید.