
EF Core ، در این آموزش، یک برنامه ی ASP.Net Core MVC میسازید که دسترسی پایه به داده ها را با استفاده از Entity Framework Core انجام می دهد.
این آموزش از مهاجرت ها برای ایجاد پایگاه داده از مدل داده ای استفاده می کند.
می توانید آموزش را با استفاده از ویژوال استودیو ۲۰۱۷ در ویندوز، یا با استفاده از .NET Core CLI در ویندوز، سیستم عامل مک، یا لینوکس دنبال کنید.
در این مقاله:
نرم افزار زیر را نصب کنید:

EF Core
ایجاد یک پروژه ی جدید

EF Core

EF Core
برای نصب EF Core، پکیج مربوط به ارائه دهنده های پایگاه داده ی EF Core که می خواهید هدف قرار دهید را نصب می کنید.
برای مشاهده ی فهرستی از ارائه دهندگان موجود، صفحه ی ارائه دهندگان پایگاه داده را ببینید.

EF Core
یک کلاس متنی و کلاس های موجودیت را که مدل را تشکیل می دهند تعریف کنید.
ویژوال استودیو:
سی شارپ:
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; }
}
}
سی شارپ:
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، آن را به عنوان یک سرویس ثبت کنید.
using EFGetStarted.AspNetCore.NewDb.Models; using Microsoft.EntityFrameworkCore;
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 coection = @"Server=(localdb)mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;
Trusted_Coection=True;CoectRetryCount=0";
services.AddDbContext<BloggingContext>
(options => options.UseSqlServer(coection));</span>
// BloggingContext requires
// using EFGetStarted.AspNetCore.NewDb.Models;
// UseSqlServer requires
// using Microsoft.EntityFrameworkCore;
}
using EFGetStarted.AspNetCore.NewDb.Models; using Microsoft.EntityFrameworkCore;
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 coection = "Data Source=blogging.db";
services.AddDbContext<BloggingContext>
(options => options.UseSqlite(coection));
</span> // BloggingContext requires
// using EFGetStarted.AspNetCore.NewDb.Models;
// UseSqlite requires
// using Microsoft.EntityFrameworkCore;
}
یک برنامه ی تولیدی بطور معمول رشته ی اتصال (coection string) را در یک فایل پیکربندی یا متغیر محیطی قرار خواهد داد.
جهت سادگی، این آموزش آن را در کد تعریف می کند.
برای اطلاعات بیشتر رشته های اتصال را ببینید.
مراحل زیر از مهاجرت ها برای ایجاد پایگاه داده استفاده می کنند.
ویژوال بیسیک:
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:
dotnet ef migrations add InitialCreate dotnet ef database update
فرمان migrations یک مهاجرت را برای ایجاد مجموعه جداول اولیه برای مدل چارچوب بندی می کند.
فرمان database update پایگاه داده را ایجاد و مهاجرت جدید را بر روی آن اعمال می کند.
یک کنترل کننده و نماها را برای موجودیت Blog چارچوب بندی کنید.

EF Core
.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 چارچوب بندی را انجام می دهد.
موتور چارچوب بندی فایل های زیر را ایجاد می کند:

EF Core

EF Core

EF Core
برچسب:
نویسنده: دانلودی