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();


10 comments:

  1. با سلام
    وقت شما بخیر. یه سوال دارم و مشکلم اینه که نمی دونم دنبال چی باید بگردم تا به سوالم برسم. من مدتی هست که ام وی سی رو یاد گرفتم ولی تنها مشکلم کار با دیتابیس هست. یعنی اینکه از چه روشی برای ارسال و دریافت ها بین برنامه و دیتابیس استفاده کنم. چند جا پرسیدم میگن از انتیتی فریم ورک خوبه. ولی اونم هر چی میگردم به نتیجه نرسیدم.
    کلا من یه چیزی می خوام که از طریق بهترین روش بتونم ارسال، دریافت، حذف، درج و ... رو انجام بدم.
    اگر پروزه ای یا کلاسی یا حتی بفرمایید که دنبال چی هم باید بگردم تا به نتیجه برسم ازتون سپاسگذارم

    ReplyDelete
  2. バーバリースタッズレザークロスボディバッグクロスボディを着用することができます調節可能なストラップを備えていたり長いショルダーストラップとして

    Also visit my web-site: バーバリー 服

    ReplyDelete
  3. あなたの本物のデザイナーハンドバッグコレクションが大きくなるにつれてあなたはほとんどのデザイナーハンドバッグはその署名のブランド名のモノグラムの裏地を持っていることに気づくでしょう

    Feel free to visit my blog: バッグ バーバリー

    ReplyDelete
  4. 香港島のアバディーンの高級
    アウトレット店への行き方

    Stop by my web-site :: miumiu バッグ

    ReplyDelete
  5. However, specific most popular at least one is the nike shoes.
    World of golf and women's fashion for too the long-term has been said to be an oxymoron. Also Nike features rainproof shoes that along with waterproof warranties. If you would like for basketball shoes, then check nike Jordan place. http://klaniny.pl/tiki/tiki-index.php?page=UserPagetorstennemcwlig

    Also visit my blog post :: nike buty air max

    ReplyDelete
  6. モールトスカーナファクトリ
    ーアウトレットはローマに向かっ
    て高速道路A1とイン
    チーザ出口からフィレンツェイタリアから車で30分に位置
    しています

    Also visit my web site; ミュウミュウ アウトレット

    ReplyDelete
  7. 各フラットはその必要性のために本当に便利なものを提供す
    るだけでなく女性にスタイリッシュでファッショナブルな外観を提供するよう
    に設計されています

    Look at my website; ミュウミュウ 店舗

    ReplyDelete
  8. What's up all, here every one is sharing these knowledge, thus it's pleasant to read this blog, and I used to visit
    this website every day.

    my site: クリスチャンルブタン

    ReplyDelete
  9. Link exchange is nothing else but it is simply placing the
    other person's weblog link on your page at appropriate place and other person will also do same in favor of you.

    Look into my blog: コーチバッグ

    ReplyDelete
  10. Hi there! Quick question that's totally off topic. Do you know how to make your site mobile friendly? My weblog looks weird when browsing from my apple iphone. I'm trying to find
    a theme or plugin that might be able to resolve this issue.
    If you have any recommendations, please share. Thank you!


    Here is my site ... クリスチャンルブタン

    ReplyDelete