Я создал проект ASP. Net Core 3.1 в VS 2019.
1) Appsettings. Json
{
"ConnectionStrings": {
"DbConnection": "Data Source = (localdb)\\ProjectsV13;Initial Catalog = master; Integrated Security = True; Connect Timeout = 30; Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
2) ProductContext.Cs
using Microsoft.EntityFrameworkCore;
using ProductService.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ProductService.Repository
{
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options)
: base(options)
{
}
public ProductContext()
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
}
3) Starup.Cs
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddSingleton<IProductRepository, ProductRepository>();
services.AddDbContext<ProductContext>(o => o.UseSqlServer
(Configuration.GetConnectionString("DbConnection")));
}
4) В папке Migrations у меня есть ProductContextModelSnapshot.Cs
using System;
using ProductService.Repository;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace ProductService.Migrations
{
[DbContext(typeof(ProductContext))]
partial class ProductContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.0.0-preview6.19304.10")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
modelBuilder.Entity("BooksLot.ProductService.Models.Category", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("Description");
b.Property<string>("Name");
b.HasKey("Id");
b.ToTable("Categories");
});
modelBuilder.Entity("BooksLot.ProductService.Models.Product", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<Guid>("CategoryId");
b.Property<string>("Description");
b.Property<string>("Image");
b.Property<string>("Name");
b.Property<decimal>("Price");
b.HasKey("Id");
b.HasIndex("CategoryId");
b.ToTable("Products");
});
modelBuilder.Entity("BooksLot.ProductService.Models.Product", b =>
{
b.HasOne("ProductService.Models.Category", "Category")
.WithMany("Products")
.HasForeignKey("CategoryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
#pragma warning restore 612, 618
}
}
}
Когда я запускаю Add-Migration ProductDB из пакета Консоль диспетчера, я получаю сообщение об ошибке
Для этого DbContext не настроен поставщик базы данных. Поставщика можно настроить, переопределив метод DbContext.OnConfiguring или используя AddDbContext в поставщике службы приложения. Если используется AddDbContext, также убедитесь, что ваш тип DbContext принимает объект DbContextOptions в своем конструкторе и передает его в базовый конструктор для DbContext.
Как я вижу, AddDbContext использует ConnectionString из AppSettings. Json, в котором содержится поставщик. Я не могу понять, чего здесь не хватает