سلام دوستان
من درون پروژه ام از روش Code First استفاده می کنم و یک متد override Seed دارم که برای مقدار دهی اولیه از ان استفاده می کنم و این متد را در در فایل Configuration Migration خودم گذاشته ام. البته تمام نت را سرچ کردم و به این نتیجه رسیدم که متد Seed را در این فایل بگذارم. ا مشکل اینجاست که هر بار پروژه را اجرا می کنم این مقادیر درون متد Seed درون جدول من اینزرت می شوند. در صورتی که من می خواهم فقط یک بار اینزرت شوند و برای دفعات بعدی این اتفاق نیفتد.
متد من به این صورت است:
namespace DataLayer.Migrations { internal sealed class Configuration : System.Data.Entity.Migrations.DbMigrationsConfiguration<DatabaseContext> { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } protected override void Seed(DatabaseContext context) { List<Gender> defaultGenders = new List<Gender>(); defaultGenders.Add(new Gender() { GenderTitle = "Male", GenderName = Resources.Expressions.Male }); defaultGenders.Add(new Gender() { GenderTitle = "Female", GenderName = Resources.Expressions.Female }); foreach (Gender gender in defaultGenders) { context.Genders.Add(gender); } base.Seed(context); } } }
حالا سوالم از دوستان این است که برای مقداردهی اولیه که فقط و فقط یک بار اتفاق بیفتد و نه هر بار که پروژه اجرا می شود چه راهی استفاده کنم یا این متد Seed را کجا بگذارم!؟!؟!؟!؟؟!
این متد توسط شما در Configuration ایجاد نمی شود بلکه این متد به صورت خودکار توسط EF ایجاد می کند و پس از هر بار اجرای Migration این متد هم صدا زده می شود.
برای این که پس هر بار اجرا اطلاعات جدید وارد نشود ابتدا بررسی کنید که آیا قبلا وارد شده است یا خیر.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)