با استفاده از این حالت می توانیم اطلاعاتی را در زمان ایجاد دیتابیس به دیتابیس وارد کنیم.

این کار در زمان هایی بیشتر مورد نیاز است که مانیاز داریم یک سری اطلاعات به صورت پیش فرض در دیتابیس قرار داده شود مثل اطلاعات نام کاربری ادمین و در حالتی دیگر اگر بخواهیم همیشه دیتابیس در یک سری اطلاعات قرار داشته باشد و هیچ اطلاعات دیگری نتواند وارد کند که بیشتر می توانید در زمان تحویل پروژه از این روش استفاده کنید که بعد از گرفتن مبلغ قرار داداتان این حالت را از جای دیگر یا مثلا تنظیمات خاصی تغییر دهید و به مشتری سایت پروژه را تحویل بدهید از این روش استفاده های بسیار زیاد دیگر میتوان برد که از حوصله این مطلب خارج است....

 

در زیر نمونه کد های مثال بالا را میبینید

 public class SchoolDBInitializer : DropCreateDatabaseAlways
    {
        protected override void Seed(SchoolDBContext context)
        {
            IList defaultStandards = new List();

            defaultStandards.Add(new Standard() { StandardName = "Standard 1", Description = "First Standard" });
            defaultStandards.Add(new Standard() { StandardName = "Standard 2", Description = "Second Standard" });
            defaultStandards.Add(new Standard() { StandardName = "Standard 3", Description = "Third Standard" });

            foreach (Standard std in defaultStandards)
                context.Standards.Add(std);

            base.Seed(context);
        }
    }

 

و در اخر هم از طریق کد زیر استراتژی DB initializer را به اتمام می رسانیم.

public class SchoolContext: DbContext
    {
        
        public SchoolContext(): base("SchoolDBConnectionString")
        {
            Database.SetInitializer(new SchoolDBInitializer());

        }
        public DbSet Students { get; set; }
        public DbSet Standards { get; set; }
    }