آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش ذخیره Data در زمان اتصال به Data Base با Entity Framework Core

دوره های مرتبط با این مقاله

آموزش ذخیره Data در زمان اتصال به Data Base با Entity Framework Core

EF Core راه های مختلفی برای add، update یا delete کردن Data در Data Base در اختیار می گذارد. یک موجودیت حاوی Data در scalar property هایش براساس EntityState که دارد ، update یا delete می شود.

دو سناریو برای ذخیره Dataی درون یک entity وجود دارد: connected یا disconnected. در سناریوی اول، یک instance از DbContext برای ذخیره و بازیابی entity ها استفاده می شود. در سناریوی دوم اوضاع متفاوت است. در این بخش به نحوه دخیره Data به صورت connected می پردازیم.

شکل زیر عملیات CRUD را در سناریوی connected نشان می دهد:


ذخیره Data در زمان اتصال به Data Base با EF Core

همان طور که در شکل هم نشان داده شده، پس از فراخوانی تابع DbContext.SaveChanges() ، Entity Framework دستورات INSERT، UPDATE و DELETE را برای entity هایی که EntityState شان Added، Modified و Deleted هستند می سازد و اجرا می کند. در سناریوی connected، یک instance از DbContext همه ی entity ها را در اصطلاحا track می کند و هنگام ساخته شدن، تغیییر و حذف یک entity، EntityState مناسبی برای آن تعیین می کند.

Insert Data (درج در Data Base)

متدهای DbSet.Add و DbContext.Add یک entity جدید به یک context اضافه می کنند که با فراخوانی متد SaveChanges() در Data Base ذخیره می شود.


using (var context = new SchoolContext())
{
    var std = new Student()
    {
        FirstName = "Bill",
        LastName = "Gates"
    };
    context.Students.Add(std);
    // or
    // context.Add< Student >(std);
    context.SaveChanges();
}

در مثال بالا، (context.Students.Add(std یک instance جدید از موجودیت Student با EntityState بصورت Added به یک context اضافه می کنند . EF Core متد DbContext.Add را معرفی کرده که کاری دقیقا مشابه DbSet.Add انجام می دهد. پس از این، متد SaveChanges() دستور INSERT زیر را می سازد و در Data Base اجرا می کند:


exec sp_executesql N'SET NOCOUNT ON;
INSERT INTO [Students] ( [FirstName], [LastName])
VALUES (@p0, @p1);
SELECT [StudentId]
FROM [Students]
WHERE @@ROWCOUNT = 1 AND [StudentId] = scope_identity();',N
'@p0 nvarchar(4000), @p1 nvarchar(4000) ',@p0=N'Bill',@p1=N'Gates'
go

Updating Data (آپدیت کردن جدول)

در سناریوی connected، EF Core API همه ی entity های بازیابی شده را توسط context دنبال می کند. وقتی Dataی یک entity را تغییر می دهیم، EF به صورت خودکار EntityState آن را به Modified تغییر می دهد.


using (var context = new SchoolContext())
{
    var std = context.Students.First< Student >(); 
    std.FirstName = "Steve";
    context.SaveChanges();
}

در مثال بالا، با دستور context.Students.First< student >()، اطلاعات اولین student را از Data Base می گیریم. به محض تغییر دادن FirstName، به طور خودکار context، EntityState آن را به Modified تغییر می دهد چرا که این تغییر درون scope شی context اتفاق افتاده. وقتی متد SaveChanges() را فراخوانی کنیم، دستور Update زیر ساخته و در Data Base اجرا می شود.


exec sp_executesql N'SET NOCOUNT ON;
UPDATE [Students] SET [FirstName] = @p0
WHERE [StudentId] = @p1;
SELECT @@ROWCOUNT;
',N'@p1 int,@p0 nvarchar(4000)',@p1=1,@p0=N'Steve'
Go

در یک دستور Update، EF فقط property هایی را که مقادیرشان تغییر کرده قرار می دهد. در مثال بالا فقط FirstName تغییر کرده، پس دستور Update بالا فقط حاوی ستون FirstName است.

Deleting Data (حذف Data از جدول)

از متدهای DbSet.Remove() و DbContext.Remove() برای حذف یک رکورد از جدول درون Data Base استفاده کنید.


using (var context = new SchoolContext())
{
    var std = context.Students.First< Student >();
    context.Students.Remove(std);
    // or
    // context.Remove< Student >(std);
    context.SaveChanges();
}

در مثال بالا، (context.Students.Remove(std یا (context.Remove(std، موجودیت std را به عنوان Deleted نشانه گذاری می کند. EF Core دستور DELETE زیر را می سازد و در Data Base اجرا می کند.


exec sp_executesql N'SET NOCOUNT ON;
DELETE FROM [Students]
WHERE [StudentId] = @p0;
SELECT @@ROWCOUNT;
',N'@p0 int',@p0=1
Go

در بخش کار با Data Base در سناریوی disconnected درمورد سناریوی دوم کار با Data Base برای Update، Delete و Insert صحبت می کنیم.

  • 75
  •    0
  • تاریخ ارسال :   1398/06/13

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .