EF Core ، در این آموزش، یک برنامه ی ASP.Net Core MVC میسازید که دسترسی پایه به داده ها را با استفاده از Entity Framework Core انجام میدهد.
این آموزش از مهاجرت ها برای ایجاد پایگاه داده از مدل دادهای استفاده میکند.
میتوانید آموزش را با استفاده از ویژوال استودیو ۲۰۱۷ در ویندوز، یا با استفاده از .NET Core CLI در ویندوز، سیستم عامل مک، یا لینوکس دنبال کنید.
در این مقاله:
- پیش نیازها
- ایجاد یک پروژه ی جدید
- نصب Entity Framework Core
- ایجاد مدل
- ثبت متن با تزریق وابستگی
- ایجاد پایگاه داده
- ایجاد یک کنترل کننده
- اجرای برنامه
- منابع بیشتر
پیشنیازهای EF Core
نرم افزار زیر را نصب کنید:
EF Core
ایجاد یک پروژه ی جدید
EF Core
EF Core
نصب Entity Framework Core
برای نصب EF Core، پکیج مربوط به ارائه دهنده های پایگاه داده ی EF Core که میخواهید هدف قرار دهید را نصب میکنید.
برای مشاهده ی فهرستی از ارائه دهندگان موجود، صفحه ی ارائه دهندگان پایگاه داده را ببینید.
EF Core
ایجاد مدل
یک کلاس متنی و کلاسهای موجودیت را که مدل را تشکیل میدهند تعریف کنید.
ویژوال استودیو:
- بر روی پوشهی Models راست کلیک کرده و Add > Class را انتخاب کنید.
- Model.cs را به عنوان نام وارد کرده و OK کنید.
- محتوای فایل را با کد زیر جایگزین کنید:
سی شارپ:
using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace EFGetStarted.AspNetCore.NewDb.Models { public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) : base(options) { } public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } public List<Post> Posts { get; set; } } public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } } }
.NET Core CLI:
- در پوشه ی Models، Model.cs را با کد زیر ایجاد کنید:
using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace EFGetStarted.AspNetCore.NewDb.Models { public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) : base(options) { } public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } public List<Post> Posts { get; set; } } public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } } }
یک برنامه تولیدی بطور معمول هر کلاس را در یک فایل مجزا قرار میدهد.
به منظور سادگی، این آموزش این کلاسها را در یک فایل قرار میدهد.
ثبت متن با تزریق وابستگی
سرویس ها (از جمله BloggingContext) در طول راه اندازی برنامه با تزریق وابستگی ثبت میشوند.
کامپوننت هایی که به این سرویس ها نیاز دارند (مانند کنترل کننده های MVC)، این سرویس ها از طریق پارامترهای سازنده (constructor parameters) یا ویژگی ها برایشان فراهم میشود.
به منظور در اختیار قرار دادن BloggingContext برای کنترل کننده های MVC، آن را به عنوان یک سرویس ثبت کنید.
ویژوال استودیو:
- در Startup.cs عبارات using زیر را اضافه کنید:
using EFGetStarted.AspNetCore.NewDb.Models; using Microsoft.EntityFrameworkCore;
- کد هایلایت و مشخص شدهی زیر را به متد ConfigureServices اضافه کنید:
public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); <span style="color: #ff0000;">var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb; Trusted_Connection=True;ConnectRetryCount=0"; services.AddDbContext<BloggingContext> (options => options.UseSqlServer(connection));</span> // BloggingContext requires // using EFGetStarted.AspNetCore.NewDb.Models; // UseSqlServer requires // using Microsoft.EntityFrameworkCore; }
- در Startup.cs عبارات using زیر را اضافه کنید:
using EFGetStarted.AspNetCore.NewDb.Models; using Microsoft.EntityFrameworkCore;
- کد هایلایت و مشخص شده ی زیر را به متد ConfigureServices اضافه کنید:
public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); <span style="color: #ff0000;">var connection = "Data Source=blogging.db"; services.AddDbContext<BloggingContext> (options => options.UseSqlite(connection)); </span> // BloggingContext requires // using EFGetStarted.AspNetCore.NewDb.Models; // UseSqlite requires // using Microsoft.EntityFrameworkCore; }
یک برنامه ی تولیدی بطور معمول رشته ی اتصال (connection string) را در یک فایل پیکربندی یا متغیر محیطی قرار خواهد داد.
جهت سادگی، این آموزش آن را در کد تعریف میکند.
برای اطلاعات بیشتر رشته های اتصال را ببینید.
ایجاد پایگاه داده
مراحل زیر از مهاجرت ها برای ایجاد پایگاه داده استفاده میکنند.
ویژوال بیسیک:
- Tools > NuGet Package Manager > Package Manager Console
- فرمان های زیر را اجرا کنید:
C# Add-Migration InitialCreate Update-Database
اگر خطایی مبنی بر The term ‘add-migration’ is not recognized as the name of a cmdlet دریافت کردید، ویژوال استودیو را بسته و مجددا باز کنید.
فرمان Add-Migration یک مهاجرت را برای ایجاد مجموعه جداول اولیه برای مدل چارچوب بندی میکند.
فرمان Update-Database پایگاه داده را ایجاد و مهاجرت جدید را بر روی آن اعمال میکند.
.NET Core CLI:
- فرمانهای زیر را اجرا کنید:
cl :
dotnet ef migrations add InitialCreate dotnet ef database update
فرمان migrations یک مهاجرت را برای ایجاد مجموعه جداول اولیه برای مدل چارچوببندی میکند.
فرمان database update پایگاه داده را ایجاد و مهاجرت جدید را بر روی آن اعمال میکند.
ایجاد یک کنترل کننده
یک کنترل کننده و نماها را برای موجودیت Blog چارچوب بندی کنید.
EF Core
- Model class را به Blog و Data context class را به BloggingContext تنظیم کنید.
- Add را کلیک کنید.
.NET Core CLI:
- فرمانهای زیر را اجرا کنید:
dotnet tool install -g dotnet-aspnet-codegenerator dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design dotnet restore dotnet aspnet-codegenerator controller -name BlogsController -m Blog -dc BloggingContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
فرمانهای tool install و add package ابزارهایی را نصب میکنند که میتوانند کنترل کننده ها و نماها را چارچوببندی کنند.
فرمان restore اطمینان حاصل میکند که تمامی پکیج های پروژه دانلود شده، و فرمان aspnet-codegenerator چارچوب بندی را انجام میدهد.
موتور چارچوببندی فایلهای زیر را ایجاد میکند:
- یک کنترل کننده (Controllers/BlogController.cs)
- نماهای Razor برای ایجاد (Create)، حذف (Delete)، جزئیات (Details)، تصحیح (Edit)، و فهرست بندی (Index) صفحات (Views/Movies/*.cshtml)
اجرای برنامه
EF Core
- به /Blogs بروید
- از لینک Create New برای ایجاد چند نوشته ی بلاگ استفاده کنید.
EF Core
- لینک های Details، Edit، و Delete را امتحان کنید.
EF Core
هیچ دیدگاهی نوشته نشده است.