اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
اگر از Entity Framework به روش Code-First استفاده میکنید و بر حسب نیاز، لازم است Stored procedure, View و یا Function ی ایجاد و استفاده نمایید، بهتر است برای ایجاد و نگهداری آنها از Migrationها استفاده نمایید. مزیت این روش این است که بر روی سورس کنترل قرار دارد و افراد تیم با گرفتن پروژه و اجرا کردن دستور Update-Database آخرین تغییرات را خواهند داشت.
اگر مشکلی در بیلد پروژه وجود نداشته باشد، خروجی زیر حاصل میشود که یک فایل خالی میباشد:
با اجرای دستور Update-Database پروسیجر فوق در دیتابیس ایجاد میشود.
فرض کنید میخواهید یک Procedure را بر روی دیتابیس ایجاد نمایید که وظیفهی درج یک نویسنده را در جدول Authors، برعهده دارد. برای این منظور SP زیر لازم است نوشته شود:
CREATE PROCEDURE CreateNewAuthor @name nvarchar(50) AS BEGIN INSERT INTO Authors values(@name) END GO
برای ایجاد خودکار این SP میخواهیم از Migration استفاده نماییم. برای این کار ابتدا یک Migration جدید را با دستور زیر ایجاد میکنیم:
Add-Migration StoredProcedureForCreateNewAuthor
public partial class StoredProcedureForCreateNewAuthor : Migration { protected override void Up(MigrationBuilder migrationBuilder) { } protected override void Down(MigrationBuilder migrationBuilder) { } }
در اینجا کاری که باید انجام شود این است که در متد Up که در زمان به روزرسانی دیتابیس اجرا میگردد، SP (View یا Function) را ایجاد نماییم. برای اینکار از متد Sql بر روی migrationBuilder، همانند کدهای زیر استفاده میکنیم:
protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.Sql(@"CREATE PROCEDURE CreateNewAuthor @name nvarchar(50) AS BEGIN INSERT INTO Authors values(@name) END GO"); }
لازم به ذکر است، اگر با طرز کار Migrationها آشنایی داشته باشید، متد down، عکس عملکرد متد Up میباشد و وظیفهی حذف تمامی تغییرات مربوط به Migration فعلی را دارد. با این اوصاف، نیاز هست متد Down را به صورت زیر تغییر دهیم:
protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.Sql("DROP PROCEDURE CreateNewAuthor"); }
- در این مقاله فقط در مورد Stored Procedureها صحبت شد؛ همین کار را میتوانید برای Viewها هم انجام دهید.