شروع کار با EF Core در ASP.NET Core

EF Core ، در این آموزش، یک برنامه ‏ی ASP.Net Core MVC می‎سازید که دسترسی پایه به داده‏ ها را با استفاده از Entity Framework Core انجام می‏دهد.

این آموزش از مهاجرت‏ ها برای ایجاد پایگاه داده از مدل داده‏ای استفاده می‏کند.

می‏توانید آموزش را با استفاده از ویژوال استودیو ۲۰۱۷ در ویندوز، یا با استفاده از .NET Core CLI در ویندوز، سیستم عامل مک، یا لینوکس دنبال کنید.

در این مقاله:

  • پیش‏ نیازها
  • ایجاد یک پروژه ‏ی جدید
  • نصب Entity Framework Core
  • ایجاد مدل
  • ثبت متن با تزریق وابستگی
  • ایجاد پایگاه داده
  • ایجاد یک کنترل کننده
  • اجرای برنامه
  • منابع بیشتر

پیش‏نیازهای EF Core

نرم ‏افزار زیر را نصب کنید:

EF Core

EF 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) را در یک فایل پیکربندی یا متغیر محیطی قرار خواهد داد.

جهت سادگی، این آموزش آن را در کد تعریف می‏کند.

برای اطلاعات بیشتر رشته ‏های اتصال را ببینید.

ایجاد پایگاه داده

مراحل زیر از مهاجرت ‏ها برای ایجاد پایگاه داده استفاده می‏کنند.

ویژوال بیسیک:

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

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

EF Core

  •  به /Blogs بروید
  •  از لینک Create New برای ایجاد چند نوشته ‏ی بلاگ استفاده کنید.

EF Core

EF Core

  •  لینک‏ های Details، Edit، و Delete را امتحان کنید.

EF Core

 


زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

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