مفاهیم اولیه Entity Framework Code First

یکشنبه 23 اسفند 1394

Entity Framework ، یک ORM برای تعامل با پایگاه های داده رابطه ای است. د راین مقاله به آموزش تکنولوژی Entity Framework Code First می پردازیم و نمونه ای عملی از آن را ایجاد خواهیم کرد .

 مفاهیم اولیه Entity Framework Code First

معرفی:
Entity Framework آخرین فن آوری دسترسی به داده ها ی مایکروسافت است. Entity Framework ، یک ORM   برای تعامل با پایگاه های داده رابطه ای است.   ORM   مخفف Object Relational Mapper است.  Entity Framework  چند رویکردهای  برای  تعامل با پایگاه داده دارد که عبارتند از:

Code First

Model First

Database First

روش Code First
 برای یادگیری Code First در  ابتدا با  برنامه کنسول. شروع می کنیم چند مورد وجود دارد که شما باید قبل از کار بر روی  Entity Framework Code First  آنها را بدانید.  Entiry framework code classes  فقط برای کلاس ها می باشد. شما می توانید از یک  Entiry framework code classes  برای اضافه کردن کلاسها به پروژه خود استفاده کنید.

قراردادهای Code First
چند قرارداد استفاده شده توسط Code First model   ، که به معنی وجود  برخی از قوانین  هنگام کار با   code classes در entiry framework است  . برخی از قراردادها در زیر  ارائه میشوند.

1. جداول به صورت خودکار pluraliz میشوند .
2. اگر یک کلاس و یک پروپرتی با همین نام از کلاس ایجاد کرده  و  در پایان ID  را با پروپرتی entity framework اضافه کرده باشید، این پروپرتی یک کلید اولیه در نظر گرفته میشود .
Primary key .3 جدول (کلاس) ، توسط Entity Framework به صورت خودکار ساخته شده  و به طور پیش فرض افزایش می یابد .

محل دیتابیس:
با Entity Framework  می توانید دیتابیس های خود را در ابر ، فولدر App_Data نرم افزار، اینترانت و یا اینترنت خود و غیره ایجاد کنید.   Entity Framework،  محل دیتابیس های فیزیکی خود را براساس  چند عامل مانند دسترسی محلی و یا سرور آنلاین ، و غیره  تعیین میکند.

حاشیه نویسی داده ها و مشخصه ها در Code First

مشخصه ها  ،  دستورالعمل هایی برای جداول دیتابیس و یا ستون های آن جدول می باشند. در اینجا، چند ویژگی که معمولا در Code First برای حفظ دیتابیس  است،  نشان میدهیم.

Name

مشخصه  Name برای تعیین نام  جدول یا ستون از جدول استفاده می شود .

    [Key]  
    publicint ID   
    {  
        get;  
        set;  
    } 

String Attributes

یکی از نکات مهم در دات نت رشته ها هستند.  reference type  رشته ها میتواند تهی (null) باشند ، بنابراین در   entiry framework،  رفتار پیش فرض reference type  رشته ها در  ستون های دیتابیس، nullable (قابل null شدن)  است . برای جلوگیری از این رفتار برای نوع نال پذیر، از ویژگی "[ Required]" استفاده میشود.

    [Required]  
    publicstring Name  
    {  
        get;  
        set;  
    }  

اگر شما  "Required"  را ننویسید ، Entity Framework  یک ستون در جدول  را با datatype های   nullable و varchar ایجاد میکند .

صفات Number

Number  نوع مقدار در دات نت است ، به طوری که آنها نیاز به "values دارند.  entiry framework  آنها را به عنوان nullable ست نمیکند  .اگر شما می خواهید به یک عدد در جدول قابلیت  null شدن بدهید ،از دیتا تایپهای nullable  در C # استفاده کنید. ستون زیر را ببینید)علامت سوال را مشاهده کنید)

    publicint ? Marks  
    {  
        get;  
        set;  
    }  

صفات Range

شما می توانید ویژگی Range  را برای تنظیم رنج داده های عددی در code classes استفاده کنید. این همان چیزی است که شما می توانید با رشته ها در کلاس های کد انجام دهید.

    [MaxLength(30)]  
    [MinLength(2)]  
    publicint ? Marks   
    {  
        get;  
        set;  
    }  
      
    [MaxLength(30)]  
    [MinLength(10)]  
    [Required]  
    publicstring Name   
    {  
        get;  
        set;  
    }  

Code First Migrations
از نکات مهم دات نت  ارتقاء دیتابیس  است ، هر زمان که مدل (code classes ) در برنامه تغییر میکند ،  به منظور ارتقاء دیتابیس  از Database migrations  در entiry framework استفاده میکینم   .

مثال:
در این مثال ما یک جدول  و دیتابیس  با استفاده از   entiry framework code first   میسازیم و پس از آن عملیات CRUD را برروی  جدول انجام میدهیم .   CRUDمخفف Create, Read, Update, Delete است .

1. یک Console Application  جدید از C #   ویژوال استودیو ایجاد میکنیم.

2. یک کلاس با نام Student به شرح زیر ، میسازیم.

    publicclassStudent   
    {  
        publicint StudentId  
        {  
            get;  
            set;  
        }  
        publicString Name  
        {  
            get;  
            set;  
        }  
    }

3.  اکنون زمان ساخت  دیتابیس و   جدول است  . یک کلاس با نام  "StudentDb" میسازیم  که از  "DbContext"   ارث بری کند خطایی در حال انجام این کار به خاطر اینکه  رفرنس  entiry framework را  اضافه نکرده اید  ، رخ میدهد.

    publicclassStudentDb: DbContext  
    {  
        public DbSet < Student > students  
        {  
            get;  
            set;  
        }  
    }  

4.  نصب و راه اندازی Entity Framework

برای نصب entiry framework  ، ابتدا solution خود را باز کنید و از مسیر زیر آن را به پروژه اضافه کنید

Tools > Nuget Package Manager > Manage Nuget packages for Solution.

5.  Browse را انتخاب کنید و سپس "Entity Framework " را  در جعبه جستجو تایپ کنید. از نتایج جستجو ،  Entity Framework را انتخاب کنید. جزئیات Entity Framework نمایش داده میشود. در حال حاضر ، گزینه  انتخاب solution ها و پروژه های که برای نصب EF  میخواهید، داده شده است. اگر در قسمت  4 چک باکس پروژه  را تیک بزنید  ، دکمه "Install" فعال خواهد شد ، Installرا کلیک و ادامه دهید.

6. پیش نمایشی از framework و پروژه مورد نظر نشان داده میشود. OK را فشار دهید و ادامه دهید.

License .7پنجره Acceptance نمایش داده میشود .  "I Accept" کلیک کنید ، پس از آن Entity Framework برروی پروژه نصب خواهد شد . شما  میتوانید بسته های نصب شده  را با باز کردن رفرنس  در Solution Explorer مشاهده کنید.

Insert Data .8:

  افزودن داده ها در پروژه

[توجه: تا به حال شما تنها طراحی داده های خود را انجام داده اید . دیتابیس هنگامی که شما برنامه را اجرا کنید  ، ایجاد خواهد شد.]
اضافه کردن کد زیر در تابع main () برای وارد کردن داده ها به جدول.

    staticvoid Main(string[] args)  
    {  
        using(var db = newStudentDb()) // object of Database ( context class )  
            {  
                Student stu = newStudent(); // student table object  
      
                Console.WriteLine("Name : ");  
                stu.Name = Console.ReadLine(); // use object.Property to assign data.  
      
                // Data Insertion into database.  
                db.students.Add(stu);  
                db.SaveChanges();  
                Console.WriteLine("Data has been inserted successfully");  
            }  
    }  

9. برای اجرای برنامه ، F5 را فشار دهید .  اولین بار این برنامه به زمان بیشتری برای اجرا  نیاز دارد زیرا باید  Entity Framework  یک دیتابیس را  ایجاد و  جداول را اضافه میکند.   نام ورودی را بگیرید  و برای ذخیره کردن آن در جدول ، روی  enter کلیک کنید. شما  پیام "data has been inserted successfully. " را خواهید دید .

10 . بازیابی داده:
داده در داخل دیتابیس  ذخیره شده است. حالا عملیات دوم  در CRUD  که  خواندن  و یا بازیابی است  را انجام میدهیم  . کد زیر در  متد Main () اضافه میکنیم ، این عملیات واکشی داده هایی که اخیرا در  جدول Student  درج شده  را انجام می دهد . برای اجرای برنامه  F5 را فشار دهید

    staticvoid Main(string[] args)  
    {  
        using(var db = newStudentDb()) // Object of Database ( context class )  
            {  
                var queryResult = (from s in db.students select s).ToList();  
      
                foreach(var item in queryResult) {  
                    Console.WriteLine("Name : {0}", item.Name);  
                }  
            }  
        Console.ReadLine();  
    }  

11. به روز رسانی داده:
برای به روز رسانی اطلاعات  کد زیر را در متد Main ()  وارد میکنیم وکد را  اجرا میکنیم . در اینجا فقط  نام دانش آموز را  به روز رسانی  میکنیم .  به منظور به روز رسانی برخی از داده ها شما باید ردیفی که می خواهید را انتخاب کنید، به طوری که ردیف مورد نظر  را واکشی و  رکورد آن به روز رسانی میشود

    staticvoid Main(string[] args)  
    {  
        using(var db = newStudentDb()) // Object of Database ( context class )  
            {  
                var queryResult = db.students.First(s => s.Name == "kolsum Ebrahimi");  
                queryResult.Name = "New Name for kolsum";  
                db.SaveChanges();  
                Console.WriteLine("Data has been updated");  
            }  
        Console.ReadLine();  
    }  

12. حذف داده:

به همان روش شما می توانید داده ها  را حذف کنید. فقط  کد زیر را به متد برنامه را اضافه و برنامه را اجرا کنید .

متد Remove () برای حذف یک سطر از جدول پایگاه داده در entity framework استفاده می شود.

    using(var db = newStudentDb()) // Object of Database ( context class )  
        {  
            var _student = db.students.First(s => s.Name == "kolsum Ebrahimi");  
            db.students.Remove(_student);  
            db.SaveChanges();  
            Console.WriteLine("Data has been Deleted");  
        }  

این عملیات CRUD ساده با استفاده از Entity Framework بود.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 6k بازدید
  • 18 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید