در این پست از وبسایت پرووید در رابطه با درج داده در دیتابیس با استفاده از EF Core در روش Disconnected Scenario #2 صحبت خواهیم کرد. تکنولوژی Entity Framework Core نسل بعدی Entity Framework است که توسط مایکروسافت معرفی شده است.

در قسمت قبلی از این آموزش در رابطه با درج داده در دیتابیس با استفاده از EF Core در روش Disconnected Scenario صحبت کردیم.

درج کردن related data ها در Entity Framework Core در disconnected scenario

در مطالب قدیمی تر از وبسایت پرووید در رابطه با ایجاد کردن relationship های مختلفی از نوع one-to-one، one-to-many و many-to-many در Entity Framework Core صحبت کردیم. در این قسمت قصد داریم در رابطه با insert کردن related data ها در Entity Framework Core در disconnected scenario صحبت کنیم. شاید جالب باشد بدانید که Entity Framework API تمامی related data ها درون related entity ها را در دیتابیس درج می کند.

بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core دیدن کنید.

با استفاده از متدهای DbContext.Add و یا DbSet.Add می توانیم related entity ها را به دیتابیس اضافه کنیم. متد Add باعث attach شدن entity ها به context و تنظیم شدن EntityState آنها بر روی حالت Added می شود. این کار برای تمامی entity هایی که در یک object graph قرار دارند و پروپرتی Id آنها خالی، null و یا با default value مربوط به date type آن Id تنظیم شده است (مثلاً اگر Id از نوع int باشد default value یا همان مقدار پیشفرض صفر است.) انجام می پذیرد. دقت کنید که هر کدام از این سه مورد برای Id به این معنی است که آن entity باید در دیتابیس درج شود.

در رابطه با این موضوع در بسته ی آموزش ویدئویی نکات طلایی Entity Framework برای برنامه های تجاری سری دوم صحبت کرده ایم. لطفاً کد زیر را در نظر بگیرید.

var stdAddress = new StudentAddress()
{
    City = "SFO",
    State = "CA",
    Country = "USA"
};

var std = new Student()
{
    Name = "Steve",
    Address = stdAddress
};
using (var context = new SchoolContext())
{
    // Attach an entity to DbContext with Added state
    context.Add<Student>(std);

    // Calling SaveChanges to insert a new record into Students table
    context.SaveChanges();
}

در کد بالا، متد context.Add<Student>(std) باعث attach شدن std که یک شی از Student است به context می شود. پس از آن EF Core API با استفاده از reference navigation property که در Student تعریف شده است به StudentAddress می رسد و EntityState هر دو entity را بر روی حالت Added قرار می دهد.

بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core دیدن کنید.

این موضوع باعث می شود که در زمان صدا زدن SaveChanges از کلاس context دستور SQL زیر ساخته شده و اجرا شود.

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

exec sp_executesql N'SET NOCOUNT ON;
INSERT INTO [StudentAddresses] ([Address], [City], [Country], [State], [StudentId])
VALUES (@p5, @p6, @p7, @p8, @p9);
SELECT [StudentAddressId]
FROM [StudentAddresses]
WHERE @@ROWCOUNT = 1 AND [StudentAddressId] = scope_identity();
',N'@p5 nvarchar(4000),@p6 nvarchar(4000),@p7 nvarchar(4000),@p8 nvarchar(4000),
@p9 int',@p5=NULL,@p6=N'SFO',@p7=N'USA',@p8=N'CA',@p9=1
Go

در قسمت بعدی از این آموزش در رابطه با درج کردن چندین رکورد در Entity Framework Core در disconnected scenario صحبت خواهیم کرد.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *