در این قسمت از آموزش ASP.NET Web Api قصد داریم با استفاده از روش Code first در انتیتی فریم ورک (EF)، ساختمان داده بسازیم. با روش Code First شما کلاسهایی در C# مینویسید که با جداول ساختمان داده تناظر یک به یک دارند و بعد EF ساختمان داده را میسازد.
سایر پست های آموزش ASP.net Web API
- آموزش APS.NET Web Api 2 با انتیتی فریم ورک ۶ (Entity Framework)
- افزودن مدل و کنترلرها – آموزش ASP.net Web API
- Seed کردن ساختمان داده – آموزش API
- روابط موجود در انتیتی – آموزش تصویری WEB API
- ساخت اشیاء انتقال داده یا DTOها
- ساخت اپلیکیشن سمت کاربر با فرمت Javascript
- ساخت رابط کاربری (UI)
در این آموزش به ویژگیهای دامنه POCO (plain-old CLR objects)میگوییم. و POCOهای زیر را میسازیم:
- نویسنده (Author)
- کتاب (Book)
در Solution Explorer، بر روی پوشه Models راست کلیک کنید. Add را انتخاب کرده و سپس بر روی Class کلیک کنید. نام Class را Author بگذارید.
کل کد در Author.cs را با کد زیر جایگزین کنید.
using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace BookService.Models { public class Author { public int Id { get; set; } [Required] public string Name { get; set; } } }
کلاس دیگری با نام Book را با کد زیر جایگزین کنید.
using System.ComponentModel.DataAnnotations; namespace BookService.Models { public class Book { public int Id { get; set; } [Required] public string Title { get; set; } public int Year { get; set; } public decimal Price { get; set; } public string Genre { get; set; } // Foreign Key public int AuthorId { get; set; } // Navigation property public Author Author { get; set; } } }
انتیتی فریم ورک از این مدلها برای ساخت جداول پایگاه داده استفاده میکند. برای هر مدل، ستون کلیدی اولیه در جدول ساختمان داده Id خواهد بود.
در کلاس Book،عبارت AuthorId کلید خارجی در جدول Author تعریف میکند. (برای ساده سازی، تصور میکنم هر کتاب یک نویسنده جداگانه دارد.) کلاس Book شامل بخش های navigation برای هر Author مجزا نیز میشود. میتوانید از قسمت navigation برای دسترسی به Author در کد استفاده کنید. در بخش چهارم با عنوان مدیریت رابطه های انتیتی، توضیحات بیشتری درباره قسمتهای navigation میدهم.
افزودن کنترلرهای Web API
در این بخش، کنترلرهای Web API که از عملیات CRUD (ساختن، خواندن، به روز رسانی و حذف) پشتیبانی میکنند را اضافه میکنیم. این کنترلرها از انتیتی فریم ورک برای برقراری ارتباط با لایه ساختمان داده استفاده میکند.
در ابتدا میتوانید فایل Controllers/ValuesController.cs را پاک کنید. این فایل شامل نمونهای از کنترلر Web API است اما شما در آموزش به این فایل نیازی ندارید.
سپس، پروژه را بسازید. ساختار Web API با استفاده از انعکاس (reflection) میتواند کلاسهای مدل را پیدا کند، بنابراین به Compiled assembly نیاز دارد.
در Solution Explorer، بر روی پوشه Controllers راست کلیک کنید. Add را انتخاب کنید و سپس Controller را انتخاب کنید.
در پنجره Add Scaffold، گزینه “Web API 2 Controller with actions, using Entity Framework” را انتخاب کرده و بعد روی Add کلیک کنید.
آموزش ASP.Net Web Api
در پنجره Add Controller، مراحل زیر را انجام دهید:
- در لیست موجود در Model class، کلاس Author را انتخاب کنید. (اگر لیست را مشاهده نمیکنید، مطمئن شوید پروژه را ساخته اید.)
- “Use async controller actions” را تیک بزنید.
- نام کنترلر را “AuthorsController” بگذارید.
- بر روی دکمه (+) در کنار Data Context Class کلیک کنید.
در پنجره New Data Context، نام را به همان صورتی که هست بگذارید بماند و بر روی Add کلیک کنید.
بر روی گزینه Add کلیک کنید تا پنجره Add Controller تکمیل و بسته شود. این پنجره دو کلاس به پروژه شما اضافه میکند:
- AuthorsControllerکنترلر Web API را معرفی میکند. این کنترلر REST API را پیاده میکند. سمت کاربر از REST API برای اجرای عملیات CRUD بر روی لیست نویسندگان استفاده میکند.
- BookServiceContext اشیاء موجود در انتیتی را در مدت زمان اجرا مدیریت میکند. این مدیریت شامل Populate کردن اشیاء با داده های ساختمان داده، تغییر tracking و ماندگار کردن دادهها در ساختمان داده است. این کار را با ارث بری از DbContext انجام میدهد.
در این قسمت از آموزش ASP.NET Web API پروژه را دوباره سازی کنید ( Build ) . حال مراحل مشابهی را انجام دهید تا کنترلر API را برای انتیتیهای Book اضافه کنید. سپس را برای کلاس مدل انتخاب کنید و کلاس BookServiceContext را برای کلاس data context نیز انتخاب کنید. (data context جدیدی نسازید). بر روی Add کلیک کنید تا کنترلر اضافه شود.