در قسمت قبل به معرفی و تاریخچه Entity Framework پرداختیم .
اکنون نوبت انجام یک مثال عملیست.ما در ابتدا روش Database First پیش می رویم :
اولین کار اینه که پرو وایدر یا مدل Entity مون رو به پروژه اضافه کنیم:
Right Click on Project -> add new Item -> data tab -> ADO.NET entity data model
سپس مانند زیر
connection string را انتخاب می کنیم . در زیر سوال می کنه که رمز را در web.config قرار بدهد یا نه .اگر نذاره هر بار می پرسه.
برای مثال ما نام mymodel را قرار دادیم و mymodel.edmx که edmx = entity data model xml هست.لایه دیتا توسط مدل کنترل می شود.
برای نمونه مایک فایل WebForm برای مثال اضافه می کنیم به پروژه و insert را انجام می دهیم. با زدن button ثبت. ابتدا در button یک شی از بستر ارتباطیمون بسازیم.هرچی اسم بانک باشه entity به صورت پیشفرض یک entity تهش میذاره. مثلا testEntities.
شی را در کل کلاس می سازیم یعنی همان ابتدا.
زمانی که saveChanges زده می شود تازه فراخوانی می شود و با بانک اطلاعاتی sync می شود .پس می شود چند عملیات انجام داد و همه را باهم sync کرد.
در بخش مدل از table یک کلاس ساخته است و با همان نام قابل مشاهده است.متد .Find() متعلق به Entity است و همان SingleOrDefault خودمان است که بر فقط روی کلید اصلی کار می کند .نباشه null برمی گرداند.
int code_edit = int.Parse(txtSearch.Text); var stu_edit2 = db.student.Find(code_edit); db.student.Remove(stu_edit2); db.SaveChanges(); Response.Redirect("Default.aspx");
برای Delete و Update ابتدا با متد find رکورد را پیدا و سپس پاک می کنیم. یک جدول جدید می سازیم با نام income و relation را با جدول قبل ایجاد می کنیم .
یک نمونه ساده inner join که برای نمایش حقوق از table جدا زده شد.اگر بخواهیم در فرم از هر دو table اطلاعات بگذاریم یا دیلیت کنیم از هر دو table می توانیم از transaction مانند عکس زیر استفاده کنیم.
زمانی که SaveChange زده می شود تمام دستورات در قالب یک پکیج به بانک ارسال می شود.و با این کار اول p را ثبت می کند.سپس ID آن را در پایینی میگذارد و آن را ثبت می کند.
اگر SaveChange در آخر باشه هر کدام که خطایی داشته باشند دیگه Save انحام نمیشه اما اگر بعد از هرکدام Save باشد جدا جدا save می شود.
در اینجا income در یک table دیگر است که با ارتباط یک به چند متصل گردیده .رابطه Lazy Load است . هست تا صداش می زنیم میره میارش از روی رابطه .برای بانک های سنگین lazy را غیر فعال می کنند.همه چیز توسط شخص و کد گرفته می شود.
- Transaction Roll-back برای Delete استفاده می شود.
- در Entity از همان طریق که Entity را add کردیم می توان store procedure هم add کرد.و به سادگی در پروژه استفاده کرد.