مشخصات مقاله
-
611
-
0.0
-
3800
-
0
-
0
مثالی از EF Core در یک Console Application
مثالی از EF Core در یک Console Application
مثالی از EF Core در یک Console Application
در این بخش آموزش یاد می گیریم چگونه از EF Core با رویکرد Code-First استفاده کنیم. برای این کار یک Console application تحت .NET Core می سازیم.
Console application تحت .NET Core را می توان با Visual Studio 2017 یا با .NET Core CLI ساخت. در این مثال از Visual Studio استفاده می کنیم.
برای ساخت یک Console application تحت .NET Core در Visual Studio، از مسیر File -> New -> Project..:
در پنجره باز شده در بخش Installed گزینه ی C# را انتخاب کنید و Console App ( دقت کنید .NET Core) را بزنید. نام و مسیر دلخواهتان را وارد کنید و OK را بزنید. پروژه ساخته می شود.
حال باید EF Core را در پروژه با استفاده از Package Manager Console نصب کنیم. از مسیر Tools -> NuGet Package Manager -> Package Manager Console، PMC را باز کنید و دستور زیر را برای نصب SQL Server provider package اجرا کنید:
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer
در بخش نصب EF Core به این موضوع پرداختیم.
ساخت Model
Entity Framework به یک Model برای ارتباط با Data Base نیاز دارد. این مدل را براساس شکل کلاس های دامین، Data Annotation ها و Fluent API configuration ها می سازد.
EF model شامل سه بخش است: conceptual model، storage model و mapping بین این دو. در رویکرد Code-First، EF مدل conceptual را براساس کلاس های دامین (entity class) ها، کلاس context و configuration ها می سازد. مدل storage و mapping ها را براساس provider مورد استفاده می سازد. برای مثال، storage model برای SQL Server متفاوت از DB2 است.
EF از این مدل برای عملیات های CRUD (Create, Read, Update, Delete) روی Data Base استفاده می کند.
پس باید entity class ها و context class ها را ایجاد کنیم. کد زیر یک کلاس ساده برای موجودیت Student و Course است:
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
}
حال باید context class را با ارث بری از DbContext بسازیم:
namespace EFCoreTutorials
{
public class SchoolContext : DbContext
{
public DbSet< Student > Students { get; set; }
public DbSet< Course > Courses { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;");
}
}
}
کلاس context بالا دو DbSet
Connection string تعیین شده یعنی پس از ساخت entity و context، وقت آن است که برای ساخت Data Base migration اضافه کنیم. EF Core دستورات migration مختلفی برای ساخت و آپدیت Data Base براساس مدل دارد. تا این لحظه Data Base SchoolDB ساخته نشده. با افزودن یک migration آن را از روی مدل می سازیم. می توان دستور migration را از طریق NuGet Package Manger Console یا dotnet CLI اجرا کرد. در Visual Studio، از مسیر Tools -> NuGet Package Manager -> Package Manager Console، PMC را باز کنید و دستور زیر را اجرا کنید: اگر از dotnet CLI استفاده می کنید، دستور زیر را وارد کنید: این دستور پوشه ی جدیدی به نام Migrations در پروژه ایجاد می کند و فایل های ModelSnapshot را در آن می سازد. پس از ایجاد یک migration، با دستور اگر از dotnet CLI استفاده می کنید، دستور زیر را وارد کنید: Data Base ساخته می شود و دو جدول Students و Courses خواهد داشت: این اولین migration برای ساخت Data Base بود. حال هرزمان کلاس های domain یا configuration ها را عوض کردید، باید Data Base را با مدل sync کرد. باری این کار دوباره از دستورات add-migration و update-database استفاده می کنیم. حال می توانیم با استفاده از context class دیتا را ذخیره و بازیابی کنیم: این مراحلی است که برای استفاده از EF Core لازم است. بخش های ذخیره دیتا در EF Core و Query زدن روی Data Base با استفاده از EF Core را برای اطلاعات بیشتر مطالعه کنید.OnConfiguring()، یک instance از DbContextOptionsBuilder برای تعیین Data Base مورد نظر استفاده می شود. MS SQL Server provider را نصب کردیم که extension method UseSqlServer را به DbContextOptionsBuilder اضافه کرده است."Server=.\SQLEXPRESS;Database=SchoolDB;Trusted_Connection=True;" در متد UseSqlServer ، اطلاعات مربوط به Data Base را فراهم می کند. بخش Server= تعیین کننده ی سروری است که استفاده می شود، Database= تعیین کننده ی نام Data Baseی است که قرار است ساخته شود، و Trusted_Connection=True مشخص می کند با Windows authentication به سرور متصل شویم. EF Core از این Connection String برای ساخت Data Base هنگام اجرای دستور migration استفاده می کند.افزودن یک Migration
PM> add-migration CreateSchoolDB
> dotnet ef migrations add CreateSchoolDB
update-database در PMC، Data Base را ایجاد می کنیم:PM> update-database –verbose
> dotnet ef database update
خواندن و نوشتن دیتا
namespace EFCoreTutorials
{
class Program
{
static void Main(string[] args)
{
using (var context = new SchoolContext()) {
var std = new Student()
{
Name = "Bill"
};
context.Students.Add(std);
context.SaveChanges();
}
}
}
}