مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

بهترین مکان برای مقداردهی اولیه Seed کجاست؟!

  • پنجشنبه 12 بهمن 1396
  • 19:49
تشکر میکنم

سلام دوستان

من درون پروژه ام از روش 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  را کجا بگذارم!؟!؟!؟!؟؟!

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 13 بهمن 1396
  • 08:24

این متد توسط شما  در Configuration ایجاد نمی شود بلکه این متد به صورت خودکار توسط EF ایجاد می کند و پس از هر بار اجرای Migration این متد هم صدا زده می شود. 

برای این که پس هر بار اجرا اطلاعات جدید وارد نشود ابتدا بررسی کنید که آیا قبلا وارد شده است یا خیر.

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • شنبه 14 بهمن 1396
  • 09:17
ممنون راهگشا بود
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)