انجام عملیات CRUD با استفاده از روش Code First در Entity Framework
شنبه 8 آبان 1395در این مقاله ، طرز کار عملیات CRUD با استفاده از روش Code First در EF را شرح خواهیم داد . ما این عملیات را در فضای Consoleانجام خواهیم داد .
معرفی :
Entity Framework یک ORM میباشد ، که با استفاده از اشیا با دامنه مشخص به ما در کار با داده های مرتبط با برنامه کمک میکند . برای کار با این داده ها ، EF سه راه را پیشنهاد میدهد :
1. روش Code First
2. روش Database First
3. روش Model First
در این مقاله ما از روش اول یعنی ، Code First استفاده خواهیم کرد .
فضای برنامه :
ابتدا ، یک پروژه Console Application ایجاد کنید . سپس به Referenceهای آن با استفاده از Manage NuGet
منابع مربوط به Entity Framework را به پروژه اضافه کنید .
ما از نسخه Entity Framework 6.1.3 استفاده میکنیم .
یک domain class ایجاد میکنیم :
نام آن را Authur.cs می گذاریم و مشخصه های زیر را در آن قرار میدهیم :
using System; using System.ComponentModel.DataAnnotations; namespace CRUD_CodeFirst { public class Author { [Key] public int AuthorID { get; set; } public string AuthorName { get; set; } public string BookTitle { get; set; } public DateTime PublicationDate { get; set; } } }
این ، domain class ما است .
یک کلاس Context ایجاد میکنیم :
روش Code First همچنین نیازمند یک کلاس Context می باشد که از DbContext مشتق می شود . یک نمونه از DbContext یک ترکیب از Unit Of Work و Repository Pattern را نشان میدهد . DbContext از نظر مفهومی همانند ObjectContext میباشد .
خب ، به سراغ ایجاد کلاس دیگری به نام AuthurContext.cs میرویم و کدهای زیر را در آن قرار میدهیم :
using System.Data.Entity; namespace CRUD_CodeFirst { public class AuthorContext : DbContext { public AuthorContext() : base("dbConnectionString") { Database.SetInitializer<AuthorContext>(new CreateDatabaseIfNotExists<AuthorContext>()); } public DbSet<Author> Authors { get; set; } } }
یک Connection String در App.config قرار میدهیم :
app.config را باز کنید و کد زیر را در آن قرار دهید ، توجه داشته باشید که کد زیر را باید ویرایش کنید و مشخصات پایگاه داده خود را به آن اضافه کنید .
<connectionStrings> <add name="dbConnectionString" connectionString="Data Source=yourdatasource;Initial Catalog=AuthorDB;User ID=youdbuserid;Password=yourdbpassword;pooling=false;MultipleActiveResultSets=True;pooling=false;" providerName="System.Data.SqlClient" /> </connectionStrings>
نمای کلی فایل config بصورت زیر خواهد بود :
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <connectionStrings> <add name="dbConnectionString" connectionString="Data Source=yourdatasource;Initial Catalog=AuthorDB;User ID=youdbuserid;Password=yourdbpassword;pooling=false;MultipleActiveResultSets=True;pooling=false;" providerName="System.Data.SqlClient" /> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <entityFramework> <!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">--> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> </configuration>
تقریبا کار به اتمام رسیده و ما فقط باید کدهای مربوط به عملیات CRUD را اضافه کنیم :
نوشتن کدهای عملیات CRUD در فایل Program.cs :
ابتدا کدهای مربوط inserting را مینویسیم :
using System; namespace CRUD_CodeFirst { class Program { static void Main(string[] args) { //Insert into Author table using (var context = new AuthorContext()) { for (int i = 0; i < 10; i++) { Author objAuthor = new Author() { AuthorName = "Author" + i, BookTitle = "Book" + i, PublicationDate = DateTime.Now.AddMonths(i) }; context.Authors.Add(objAuthor); context.SaveChanges(); } } } } }
تکه کد بالا ، چگونگی ایجاد و اضافه کردن یک Authur را به AuthurDB نمایش میدهد . پیش از آن ما مجموعه از Authurها را تحت عنوان یک مشخصه در کلاس AuthurContext تعریف کردیم .
public DbSet<Author> Authors { get; set; }
ما نمونه ای از Authur را به این مجموعه اضافه کردیم سپس متد SaveChange را برای ثبت تغییرات در پایگاه داده فراخوانی کردیم :
نتیجه را در زیر مشاهده میکنید :
در مرحله بعد ، کدهای مربوط به بازیابی اطلاعات مینویسیم :
//select records using (var context = new AuthorContext()) { context .Authors .ToList() .ForEach ( a => Console.WriteLine("AuthorId={0} AuthorName={1} BookTitle={2} PublicationDate={3}", a.AuthorID, a.AuthorName, a.BookTitle, a.PublicationDate.ToString("dd/mm/yyyy")) ); }
نتیجه را در زیر مشاهده میکنید :
تکه کد بعدی ، کدهای مربوط بروزرسانی کردن داده ها است :
//Update into Author table using (var context = new AuthorContext()) { Author objAuthor = new Author() { AuthorID = 5, AuthorName = "Barnamenevisan Team", BookTitle = "CRUD using Code First Approach", PublicationDate = DateTime.Now }; context.Authors.Add(objAuthor); context.Entry(objAuthor).State = EntityState.Modified; context.SaveChanges(); }
خروجی آن به صورت زیر خواهد بود :
آخرین تکه کد مربوط به حذف یک رکورد است :
//Delete an Author using (var context = new AuthorContext()) { int authorID = 7; var author = context.Authors.Find(authorID); //specify the AuthodId context.Authors.Remove(author); //removes the entity from the Authors Entities/Collections context.SaveChanges(); }
ابتدا ما نیاز داریم که Authur مورد نظر را پیدا کنیم ، سپس آن را با استفاده از متد Remove از مجموعه حذف کنیم و در آخر با متد SaveChange تغییرات را ثبت کنیم :
خروجی را در زیر مشاهده میکنید :
در آخر کلاس Program بصورت زیر خواهد بود :
using System; using System.Data.Entity; using System.Linq; namespace CRUD_CodeFirst { class Program { static void Main(string[] args) { //Insert into Author table using (var context = new AuthorContext()) { for (int i = 0; i < 10; i++) { Author objAuthor = new Author() { AuthorName = "Author" + i, BookTitle = "Book" + i, PublicationDate = DateTime.Now.AddMonths(i) }; context.Authors.Add(objAuthor); context.SaveChanges(); } } //Select Author records using (var context = new AuthorContext()) { context .Authors .ToList() .ForEach ( a => Console.WriteLine("AuthorId={0} AuthorName={1} BookTitle={2} PublicationDate={3}", a.AuthorID, a.AuthorName, a.BookTitle, a.PublicationDate.ToString("dd/mm/yyyy")) ); } //Update into Author table using (var context = new AuthorContext()) { Author objAuthor = new Author() { AuthorID = 5, AuthorName = "RNA Team", BookTitle = "CRUD using Code First Approach", PublicationDate = DateTime.Now }; context.Authors.Add(objAuthor); context.Entry(objAuthor).State = EntityState.Modified; context.SaveChanges(); } //Delete an Author using (var context = new AuthorContext()) { int authorID = 7; var author = context.Authors.Find(authorID); //specify the AuthodId context.Authors.Remove(author); //removes the entity from the Authors Entities/Collections context.SaveChanges(); } Console.ReadKey(); } } }
نتیجه گیری :
خب ، در این مقاله ما چگونگی کارکرد از روش Code First در EF را آموختیم . امیدواریم که مفید واقع شده باشد .
- C#.net
- 3k بازدید
- 4 تشکر