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

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

Data initializer

جمعه, 24 شهریور 1396 15:01

Data initializer

سلام من کلاس نوشتم که چک میکنه از دیتابیس اگه جدول role خالی باشه دوتا role اد کنه ولی بعد که اجراش میکنم یه خطا میده و میگه یک یا چند خطا در context وجود داره در صورتی که نداره خیلی تست کردم ولی چیزی پیدا نکردم کمکم کنید.

جمعه, 24 شهریور 1396 15:09

لطفا کد ها و متن ارور را قرار دهید.

جمعه, 24 شهریور 1396 15:12
        public static async Task DataBaseInitializerasync(IServiceProvider serviceProvider)
        {
            
            using(var db = serviceProvider.GetRequiredService<DataContext>())
            {
                var sqlDatabase = db.Database;
                if (sqlDatabase != null)
                {
                    await sqlDatabase.EnsureCreatedAsync();
                    if (db.Role == null)
                    {
                        db.Role.Add(new Role()
                        {
                            Id = 1,
                            TitleFa = "مدیر",
                            TitleEn = "Admin"
                        });
                        db.Role.Add(new Role()
                        {
                            Id = 2,
                            TitleFa = "کاربر",
                            TitleEn = "User"
                        });
                        db.SaveChanges();
                    }
                    if (db.Role != null)
                    {
                        if (!db.Role.Where(r => r.TitleEn == "Admin").Any())
                        {
                            db.Role.Add(new Role()
                            {
                                Id = 1,
                                TitleFa = "مدیر",
                                TitleEn = "Admin"
                            });
                        }
                        if (!db.Role.Where(r => r.TitleEn == "User").Any())
                        {
                            db.Role.Add(new Role()
                            {
                                Id = 2,
                                TitleFa = "کاربر",
                                TitleEn = "User"
                            });
                            db.SaveChanges();
                        }
                    }
                }
            }
        }

متن خطا اینه

Message "One or more errors occurred. (No service for type 'DAL.Context.DataContext' has been registered.)" string
جمعه, 24 شهریور 1396 15:19

معادلی برای DataContext تعریف نشده است. از ASP.NET Core استفاده می کنید؟

جمعه, 24 شهریور 1396 15:20

بله یعنی معادلی تعریف نشده

جمعه, 24 شهریور 1396 15:31

شما باید وابستگی DbContext را به ServiecProvider تزریق کنید. در کلاس StartUp :

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<YourContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddMvc();
}

چند نکته:

لطفا قبل از پرسیدن سوال جزئیات را شرح دهید، کد و متن ارور را قرار بدهید و بگویید از چه فریم ورکی با چه نسخه و ... استفاده می کنید.بدون شرح دادن جزئیات چگونه به شما پاسخ داده شود؟! : )

قبل از استفاده از هر فریم ورک یا فرایندی لطفا مستندات آن را مطالعه کنید: ASP.NET Documentation | Microsoft Docs

چگونه میتوانیم یک سوال خوب بپرسیم ؟

جمعه, 24 شهریور 1396 15:40

الان این خطلا رو میده

Message "AddDbContext was called with configuration, but the context type 'DataContext' only declares a parameterless constructor. This means that the configuration passed to AddDbContext will never be used. If configuration is passed to AddDbContext, then 'DataContext' should declare a constructor that accepts a DbContextOptions<DataContext> and must pass it to the base constructor for DbContext." string
جمعه, 24 شهریور 1396 15:44
 public SchoolContext(DbContextOptions<DataContext> options) : base(options)
        {
        }

context شما باید دارای سازنده باشد .

جمعه, 24 شهریور 1396 16:06
پنج شنبه, 30 شهریور 1396 12:52

بررسی کردم خطایی نداشت، اگر خطا دارید متنش رو قرار بدید.

پنج شنبه, 30 شهریور 1396 15:46

آقای علیزاده پروژه تو کد نویسیش ایراد نداره وقتی run می کنی این خطا رو میده

"One or more errors occurred. (Cannot resolve scoped service 'DAL.Context.DataContext' from root provider.)"

پنج شنبه, 30 شهریور 1396 15:58

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید