• 1399/03/24

خطا در هنگام migration :

سلام و عرض ادب.

موقع اجرای اولین 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!");
           });
       }
   }
}

 

  • 1399/03/24
  • ساعت 14:16

باید در کنسول لایه ای که context در اون هست انتخاب کنید 

 


  • 1399/03/24
  • ساعت 14:35

طبق آموزش پیش رفتم، context در لایه ی data است و منم در کنسول لایه ی دیتا رو انتخاب کردم.
عکسشو براتون ارسال کردم.


  • 1399/03/24
  • ساعت 14:36

متن خطا رو سرچ کنید 

راه حل های متفاوتی داره باید تست کنید


  • 1399/03/24
  • ساعت 18:07

من قبلا به این مشکل برخوردم که چند تا چیز رو ممطمئن شو که درست انجام دادی

1_نیازی به Microsoft.EntityFrameworkCore.Tools.DotNet  نیست مطمئن شو پاک شده

2_بهتره  Microsoft.EntityFrameworkCore.Tools نصب شده باشه به اسمش توجه کن

3_رشته اتصالت درست باشه

4_کد های مایگریشن رو درست و به ترتیب بزنی(اول enable بعد add بعد update)


  • 1399/03/24
  • ساعت 18:29

سلام تو Contextوقتی که DbContextOption درست کردی بعد باید option پاس بدی DbConetct 

اینجوری تو Base باید option  پاس بدی به DbContext 


  • 1399/03/30
  • ساعت 15:47

سید محمد صادق موسوی ضیابری

ممنون همون مطلبیه که شما گفتی مشکل برطرف شد.
ظاهرا تو بعضی نسخه ها نیاز به نصب Microsoft.EntityFrameworkCore.Tools.DotNet نیست.

و
مهدی طاهرآبادی

اینکارو انجام داده بودم.


logo-samandehi