ADO.NET Entity Framework (EF)

یکی از ابزارهای قدرتمند .NET برای تولید نرم افزارهایی که با دیتابیس سرو کار دارند ADO.NET Entity Framework یا EF است. EF به شما کمک میکند که سریعتر و راحتتر و مطمئن تر با دیتابیس کار کنید و در صورت تغییر دیزاین دیتابیس تقریبا هیچ زحمت اضافه ای نکشید.
احتمالا همه شما با معماری سه لایه Data/Business/UI آشنایی دارید. برای استفاده از EF پیشنهاد میشود که از معماری سه لایه Model/View/Controller استفاده کنید. در این معماری View معادل UI است، Controller معادل Business و Model معادل Data. اما تفاوت بزرگ آن با معماری قبلی در این است که در معماری قبلی ValueObject (کتابخانه ای که در آن تمام کلاسهای پایه ی سیستم تعریف شده اند، مثل مشتری، محصول، ...) جزئی از Business بود که Reference آن هم در UI موجود بود و هم در DataAccess. اما در این معماری ValueObject جزئی از Model خواهد بود و به ناچار Reference پروژه ی Model را باید در تمام پروژه هایی که با ValueObject سروکار دارند اضافه کنیم. این امر باعث زیر پا گذاشتن Encapsulation میشود زیرا مثلا وقتی Reference پروژه ی Model در View اد شود، از طریق View میتوانید مستقیما در دیتابیس تغییر ایجاد کنید. اما در ادامه خواهید دید که آنچنان هم بد نیست!
1.        ابتدا EF را روی .NET خود نصب کنید.
2.        یک Class Library به Solution خود اضافه کنید.
3.        از طریق Add new item یک ADO.NET Entity Data Model را به پروژه ی Class Library اضافه کنید.
4.        در پنجره ای که ظاهر میشود تعیین کنید که آیا دیتابیس را از اول میخواهید بسازید یا که میخواهید از دیتابیس موجود استفاده کنید. (ساختن دیتابیس از اول از طریق Entity Data Model ساده تر و مطمئن تر است. زیرا اگر دیتابیس موجود استفاده کنید تعداد زیادی Binding باید انجام دهید.)
5.        مشخصات لازم را وارد کنید تا Wizard کارش تمام شود. (من برای ایجاد فایل از نام پیش فرض Model1 استفاده کردم)
6.        حال یک صفحه سفید میبیند که نامش بصورت *.edmx است(مثلا Model1.edmx). این فایل Entity Data Model نام دارد که معادل همان Class Diagram یا Domain Model یا Database Diagram است. در EF به هر کلاس EntitySet گفته میشود که هم کار Table را انجام میدهد و هم کار Class. هر نمونه از EntitySet یک Entity نام دارد که هم کار Row را انجام میدهد و هم کار Object (یا instance) را. البته همه به جای EntitySet از کلمه Entity استفاده میکنند. (هرجا Entity گفتیم منظورمان EntitySet است)
7.        از طریق toolbox، Entity ها و Association های موردنظر خود را تولید کنید. (به دلیل سادگی، توضیح بیشتر لازم ندارد. کافیست روی Entity ها و Association ها کلیک کنید و Properties آنها را ببینید)
8.        بعد از اتمام کار، روی صفحه رایت کلیک کنید و Generate Database from Model را انتخاب کنید تا فایل دیتابیس آپدیت یا ساخته شود.
9.        دوباره روی صفحه رایت کلیک کنید و Add Code Generation Item را انتخاب کنید تا تمامی کلاسهای مربوطه ساخته شوند. در صفحه ای که باز میشود یک Generator (من از DbContext Generator استفاده میکنم) انتخاب کنید.
10.     حال در کد خود کافیست یه نمونه از کلاس Model1Container بسازید. از طریق آن میتوانید به دیتابیس دسترسی داشته باشید.

Model1Container m = new Model1Container();

...

Entity1 e1 = new Entity1();
e1.Name = "mammad";
if (m.Entity1.Any())
    e1.PersonelId = m.Entity1.Last().PersonelId + 1;
else
    e1.PersonelId = 1;
m.Entity1.Add(e1);
m.SaveChanges();