سلام و عرض ادب.
موقع اجرای اولین migration برای datalayer این خطا رو دارم.
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.
و فایل json ام هم به این صورت است.
{
"ConnectionStrings": {
"BarghConnection": "Data Source=DESKTOP-435KRS9\\MSSQLSERVER2016;Initial Catalog=BarghDB;Integrated Security=True;MultipleActiveResultSets=True"
}
}
و context پروژه هم به این صورت:
using System;
using System.Collections.Generic;
using System.Text;
using Bargh.DataLayer.Entities.User;
using Microsoft.EntityFrameworkCore;
namespace Bargh.DataLayer.Context
{
public class BarghContext:DbContext
{
public BarghContext(DbContextOptions<BarghContext> options):base()
{
}
#region User
public DbSet<Role> Roles { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<UserRole> UserRoles { get; set; }
#endregion
}
}
و startup هم به این ترتیب
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Bargh.DataLayer.Context;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace Bargh.Web
{
public class Startup
{
public IConfiguration Configuration { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
#region DataBase Context
services.AddDbContext<BarghContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("BarghConnection"));
}
);
#endregion
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvcWithDefaultRoute();
app.UseStaticFiles();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
}
باید در کنسول لایه ای که context در اون هست انتخاب کنید
طبق آموزش پیش رفتم، context در لایه ی data است و منم در کنسول لایه ی دیتا رو انتخاب کردم.
عکسشو براتون ارسال کردم.
متن خطا رو سرچ کنید
راه حل های متفاوتی داره باید تست کنید
من قبلا به این مشکل برخوردم که چند تا چیز رو ممطمئن شو که درست انجام دادی
1_نیازی به Microsoft.EntityFrameworkCore.Tools.DotNet نیست مطمئن شو پاک شده
2_بهتره Microsoft.EntityFrameworkCore.Tools نصب شده باشه به اسمش توجه کن
3_رشته اتصالت درست باشه
4_کد های مایگریشن رو درست و به ترتیب بزنی(اول enable بعد add بعد update)
سلام تو Contextوقتی که DbContextOption درست کردی بعد باید option پاس بدی DbConetct
اینجوری تو Base باید option پاس بدی به DbContext
ممنون همون مطلبیه که شما گفتی مشکل برطرف شد.
ظاهرا تو بعضی نسخه ها نیاز به نصب Microsoft.EntityFrameworkCore.Tools.DotNet نیست.
و
مهدی طاهرآبادی
اینکارو انجام داده بودم.