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

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

Data initializer

  • جمعه 24 شهریور 1396
  • 15:01
تشکر میکنم

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

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

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

سهیل علیزاده

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

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

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

  • جمعه 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
کاربر سایت

سهیل علیزاده

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

  • جمعه 24 شهریور 1396
  • 15:19

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

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

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

کاربر سایت

سهیل علیزاده

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

  • جمعه 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

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

  • جمعه 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
کاربر سایت

سهیل علیزاده

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

  • جمعه 24 شهریور 1396
  • 15:44
 public SchoolContext(DbContextOptions<DataContext> options) : base(options)
        {
        }

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

  • جمعه 24 شهریور 1396
  • 16:06

ببخشید من پروژه رو ضمینه کردم میشه یه نگاهی بهش بندازید

فایل های ضمیمه

کاربر سایت

سهیل علیزاده

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

  • پنجشنبه 30 شهریور 1396
  • 12:52

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

کاربر سایت

محمدعلی ۴۳۹۸۹

عضویت از 1396/05/28

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

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

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

کاربر سایت

سهیل علیزاده

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

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

به صورت زیر عمل کنید:

How to seed your EF Core database - Gary Woodfine

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

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

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

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