دلیل خطای no database provider has been configured for this dbcontext
با سلام
من در هنگام migration با این خطا مواجه میشم:
No database provider has been configured for this DbContext. A provider can be configured by overriding the 'DbContext.OnConfiguring' method or by using 'AddDbContext' on the application service provider. If 'AddDbContext' is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext> object in its constructor and passes it to the base constructor for DbContext.
سرچ هم زیاد کردم ولی باز هم مشکلش رو نتونستم رفع کنم
برنامم هم به طور کلی به صورت زیر هست:
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
class ParentContext : DbContext
{
public DbSet<ParentClass> parentClasses { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
}
}
}
////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
class ParentClass
{
public int Id { get; set; }
public string fullname { get; set; }
public string Ncode { get; set; }
public string address { get; set; }
}
}
بهتر بود کدهایی که در کلاس 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();
}
موارد بالا اگر همگی درست باشن مشکل رفع خواهد شد.
با سلام.ممنون از پاسختون
این که فرمودین اطلاعات کافی نیست باید عرض کنم که کل برنامه همونی بود که در سوال نوشتم.به دلیل اینکه من تازه دارم یاد میگیرم این برنامه رو به عنوان نمونه نوشتم برای یادگیری نحوه اتصال به بانک و چند نکته دیگر
اگر یک بار دیگه بخوام اطلاعات بدم.در کل سه تا کلاس داره برنامه که شامل 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 ندارم
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2