دسته بندی ها
12:07 1400/01/02

دلیل خطای no database provider has been configured for this dbcontext

مشخصات سوال کننده :
کاربر : nedaes     امتیاز کاربر : 0     رتبه کاربر : 7020
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4987
پاسخ دهنده : saedbfd 23:45 1400/01/03

بهتر بود کدهایی که در کلاس Startup.cs و در متد ConfigureService و هم چنین Connection String که در فایل appsettings.json هست و کلاس DbContext خودتون رو قرار می دادید. چون در خطای شما همه این موارد میتونه تاثیر داشته باشه.

اما با توجه به اینکه اطلاعات کافی نیست موارد زیر رو میگم چک کنید توی پروژه خودتون:

کلاس DbContext

شما حتما باید یک کلاس که از کلاس DbContext مشتق شده باشه داشته باشید. این کلاس در واقع نماینده دیتابیس در پروژه شما در انتیتی فریم ورک می باشد. این کلاس باید به شکل زیر باشه. (به احتمال خیلی زیاد خطای شما بخاطر اشکال در همین کلاس باشه.)

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> option) : base(option)
    {

    }
}

 

کانکشن استرینگ

یکی دیگه از مواردی که باید بررسی کنید رشته اتصال هست که در فایل appsettings.json هست. البته خطای شما به نظر نمیاد بخاطر اشکال در رشته اتصال باشه اما شما یه بررسی انجام بدید.

{
  "ConnectionStrings": {
    "DynamicMenuConnection" :  "Data Source=.; Initial Catalog=DataBaseName; user Id=sa; Password=***"
  },

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

بررسی متد ConfigureService در کلاس startup

در انتها متد ConfigureService هم بررسی کنید و مطمئن بشید که سرویس مربوط به دیتابیس به درستی راه اندازی شده.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(opttion =>
        opttion.UseSqlServer(Configuration.GetConnectionString("DynamicMenuConnection")));

    services.AddControllersWithViews();
}

موارد بالا اگر همگی درست باشن مشکل رفع خواهد شد.

به این پاسخ امتیاز بدهید    0
امتیاز: 1654 رتبه: 1
پاسخ دهنده : nedaes 18:08 1400/01/08

با سلام.ممنون از پاسختون

این که فرمودین اطلاعات کافی نیست باید عرض کنم که کل برنامه همونی بود که در سوال نوشتم.به دلیل اینکه من تازه دارم یاد میگیرم  این برنامه رو به عنوان نمونه نوشتم برای یادگیری نحوه اتصال به بانک و چند نکته دیگر

اگر یک بار دیگه بخوام اطلاعات بدم.در کل سه تا کلاس داره برنامه که شامل Program.cs و ParentClass.cs و ParentContxt.cs هست.که این کلاس آخری همون کلاسی هست که از DbContext مشتق میشه. من تغییراتی که شما فرمودین در کلاس ParentCOntxt باید ایجاد بشه رو به این صورت اعمال کردم ولی متاسفانه یه خطای دیگه داد(البته مطمئن نیستم که درست اعمال کرده باشم):

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    class ParentContext : DbContext
    {
        public ParentContext(DbContextOptions<ParentContext> option) : base(option)
          {

          }

        public DbSet<ParentClass> parentClasses { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
          {
            
            base.OnConfiguring(optionsBuilder);
            
          }

       


    }
}

ممنون میشم اگه بفرمایید کدوم قسمت کد بالا ایراد داره. و در ضمن من کلاسی به اسم Startup.cs ندارم

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7020
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود