با سلام
من در هنگام 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 ندارم
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
113
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
217
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
113
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|