مشخصات مقاله
آموزش code first approach-رویکرد Code First در Entity Framework
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
رویکرد Code First در Entity Framework
مقدمه
به عبارت ساده رویکرد Code First در Entity Framework روشی برای ساخت پایگاه داده و جدول ها با استفاده از کد C# و کلاس های Entity Framework است. در این رویکرد، اول جدول ها را برای ذخیره داده ها در نظر می گیریم و پس از آن کلاس ها را بسته به نیازهایمان طراحی می کنیم. در این مقاله شما را با روشی ساده آشنا خواهیم کرد امیدوار هستم تمام مفاهیم را به خوبی درک کنید.
پیش نیاز
قبل از شروع یادگیری، یادآور می شویم کلاس ها در رویکرد اول کد بسیار مهم هستند:
DBContext
DBSet
گمان نبرید، این کلاس ها در رویکرد Database First و Model First استفاده نمی شوند. فقط تا این اندازه مهم نیستند.
DBContext
کار آن تبدیل کوئری LINQ to Entity به کوئری های SQL، و ارسال به پایگاه داده است.
نکته:
Entityها را اشتباه نگیرید. "موجودیت (entity) یک کلاس است که برای نگاشت به یک جدول تعریف می شود." اگر در مورد چیستی entity دچار سردرگمی شده اید، نگران نباشید، در ادامه با یک مثال ساده توضیح خواهم داد.
بر اساس entity عملیات insert، update و delete را بر روی پایگاه داده انجام میدهد.
پس از بازیابی entityها از پایگاه داده، رد تغییرات اعمال شده، نگهداری می شوند.
DBSet
کلاس DBSet یک مجموعه entity است برای عملیاتی نظیر create، read، update و delete.
حالا اجازه بدهید با یک مثال ادامه دهیم:
مرحله 1
به گزینه File>New>Project بروید و یک console application اضافه کنید.
مرحله 2
بر رو ی فولدر Refrences راست کلیک کرده و با استفاده از NuGet package، فایل های Entity Framework DLL را ثبت کنید. اگر NuGet را ندارید، Entity Framework DLL را از طریق Google دانلود کرده و به فولدر references اضافه کنید.
مرحله 3
حالا می توانید Entity Framework DLL را مانند تصویر زیر در فولدر references ببینید.
در تصویری که مشاهده کردید، اسمبلی دوم برای annotation است و استفاده از آن ضروری است. در صورتی که وجود ندارد، از طریق .Net assembly آن را اضافه کنید. برای این کار بر روی فولدر references راست کلیک کرده و گزینه ی Add reference را انتخاب کنید و در تب .Net آن را انتخاب کنید.
مرحله 4
حالا دو کلاس به نام های Employee و Department اضافه می کنیم.
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CodeFirstApproachInEntityFramework
{
public class Employee
{
[Key]
public int EmployeeID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
[ForeignKey("Department")]
public int DepartmentID { get; set; }
public Department Department { get; set; }
}
}
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CodeFirstApproachInEntityFramework
{
public class Department
{
[Key]
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
}
}
Annotation
کار Annotationها این است که یکسری شرط بر روی کلا س ها و ویژگی هایشان (مثلاً کلیدها) به وجود می آورند.
ستون های EmployeeID و DepartmentID توسط ویژگی هایی نظیر [Required] و [MaxLength(50)] و در این مثال [Key]، در پایگاه داده به عنوان کلید اصلی نگاشت می شوند.
برای استفاده از ویژگی Foreign key باید از فضای نام System.ComponentModel.DataAnnotations.Schema استفاده کنید.
مرحله 5
در این مرحله کلاس جدیدی به نام EmployeeContext مانند زیر اضافه می کنیم:
مرحله 6
یک فایل App.Config اضافه کنید و connection string زیر را در آن بنویسید:
نکته:
قبل از اجرای برنامه باید پایگاه داده ای به نام EntityDB ایجاد کنید.
مرحله 7
قطعه کد زیر را در کنسول برنامه بنویسید:
using System;
using System.Collections.Generic;
namespace CodeFirstApproachInEntityFramework
{
class Program
{
static void Main(string[] args)
{
using (EmployeeContext cx = new EmployeeContext())
{
// Here i going to insert data into department table because it is //referenced by a FOREIGN KEY constraint And we are already know that //Employee data will be not inserted into Employee table until we doesn't
//insert data into Department table
////Now I am going to insert data into Employee table
IList
{
new Department{DepartmentID=1,DepartmentName="IT"},
new Department{ DepartmentID=2, DepartmentName="HR"},
new Department{ DepartmentID=3, DepartmentName="Account"}
};
cx.Departments.AddRange(department);
cx.SaveChanges();
////Now I am going to insert data into Employee table
Employee employee = new Employee();
employee.EmployeeID = 1;
employee.Name = "Mohit";
employee.Age = 21;
employee.Gender = "Male";
employee.DepartmentID = 1;
cx.Employees.Add(employee);
cx.SaveChanges();
Console.WriteLine("Tables have created successfully.");
}
Console.ReadKey();
}
}
}
نکته:
من در اینجا ناسازگاری (conflict) کلید اصلی را در نظر نگرفته ام. به همین دلیل اگر برای بار دوم employeeID را برابر 1 قرار دهید (employeeID=1) با یک خطا مواجه خواهید شد.
مرحله 8
در صورت موفقیت آمیز بودن اجرا، به SQL Server Management Studio بروید و پایگاه داده EntityDB را باز کنید و محتویات آن را بررسی کنید.
در این مقاله سعی کردم مفاهیم را به ساده ترین شکل ممکن بیان کنم. امیدوارم از مطالعه آن لذت برده باشید.