سلام
من در ef code first تازه کارم .... می خواستم بدونم کاربرد دو تا متد set , attach در code first چیه؟ ن هر چی گشتم مثال خوبی ندیدم حتی سایت مایکروسافت هم مثالی من پیدا نکردم!
ممنون میشم توضیح بدین
سلام
من در ef code first تازه کارم .... می خواستم بدونم کاربرد دو تا متد set , attach در code first چیه؟ ن هر چی گشتم مثال خوبی ندیدم حتی سایت مایکروسافت هم مثالی من پیدا نکردم!
ممنون میشم توضیح بدین
Set نوعی هست ب عنوان محفظه ای در دو شکل جنریک و غیر جنریک برای نگهداری موجودیت ها یا همون کلاس های EF
که در واقع این کلاسها هم بیانگر جداول بانک اطلاعاتی ما هستند
این کلاس Set دارای متدهایی برای اعمال کارهای متداول با بانک اطلاعاتی هست مثل Insert Update Delete که در اینجا به ترتیب میشه
Add-Attach-Remove
var s = Set<ApplicationUser>();
s.Add(---);
s.Attach();
ApplicationUser کلاس کاربران ماست که با تحویل دادن به DbSet میتونیم به رکوردهای اون جدول دسترسی داشته باشیم یا رکورد درج و حذف کنیم
public DbSet<ApplicationUser> ApplicationUsers{ get; set; }
کافیه این ApplicationUsers رو توی کدها صدا بزنیم و از توابع یا عبارات لامبدا بهره ببریم
با تشکر از شما دوست گرامی,
میشه لطفا توضیح بدین که فرق این متد set (در واقع مزیت استفاده ازش ) با اینکه از dbcontext و dbset استفاده کنیم چیه؟ مثلا همانطور که می دانید می تونیم بنویسیم
myContext.Courses.Add
پس اگر بخوام بهتر منظورم رو برسونم آینه که اگه این set. نباشه چه کارهایی نمی تونیم انجام بدیم؟
من سوالم رو در مورد متد Attach بعد از پاسخ شما می پرسم
هیچ فرقی ندارند Dbset یک شی از روی dbcontext.set برای ما میسازه با همون متدها و خواص
بعضی وقتها میتونیم از set استفاده کنیم مثلا هنگام بکار گیری الگوی Unit Of Work
public IDbSet<TEntity> Set<TEntity>() where TEntity : class
{
return base.Set<TEntity>();
}
وقتی مینویسید
myContext.Courses.Add
این کلمه Courses در واقع تحویل داده شده به Dbset اون تابع Add هم به همین خاطر دسترسی داریم
در کلاس کانتکست معمولا اینطوری تعریف میکنند
public class ApplicationDbContext : DbContext>,
{
public ApplicationDbContext()
: base("ApplicationDbContext")
public DbSet<Course> Coursess{ get; set; }
{
وظیفه Set یا DbSet اینه که با تحویل کلاسهای poco به این محفظه ها کلاسهای ما در معرض DbContext قرار بگیره و بتونیم متدهای مختلف رو اجرا کنیم
ممنونم
متد attach رو میشه بگید در چه مواقعی بکار می بریم؟ جایی خوندم که این متد برای وقتی هست که entity در memory هست ولی در db نیست. چطور ممکنه چنین حالتی بوجود بیاد؟ مگه ما entity های درون حافظه رو از روی db بر نمی داریم؟
تشکر از توجهتون
سوال دیگه اینکه برای یادگیری موثر الگویUnit of work چه کتابی رو پیشنهاد می کنید مهندس؟
مزیت entity framework برای کار با اشیاء درون حافظه هست و دستورات اون به Linq to Object مشهوره
متد Attach برای ویرایش یک رکورد هست چه در دیتابیس باشه چه در حافظه
زمانیکه رکورد در دیتابیس هست باید
ابتدا باید با یک دستور رکورد از دیتابیس واکشی بشه و ریخته بشه درون حافظه و پس از تغییرات متد Attach بکار ببریم و سپس savechange
الگوی Unit Of work زیاد سخت نیست میحث خیلی ساده ای هست فقط باید کار با Interface ها رو بلد باشید
سپاس فراوان از شما